我有一个包含太多值的Excel文件,只有两列是相关的,我将它们提取到一个新的数据框架中。所以我有两列,第一列是Product编号,第二列是productsum。问题是产品编号与生产的总和不一致。生成的和总是比对应的Product至少低1行,但有时不止一个值,可能有10行值属于一个Product。
我的想法是索引字符串的第一列(产品编号类似于A100 000),然后确定它位于何处以及下一个不匹配字符串位于何处。然后我有一个行范围或者只是一个数字,然后我可以像这样添加到函数中:
Product1 = (df.iloc[Product1:Product1+diff1, 1])
Product1 = Product1.sum(axis=0)
来定位和求和数字等。目标是有一个脚本,我可以把Excel注入每个月,并得到一个报告,有多少是什么生产。
我的问题是,如果这在Python中是可能的,我猜是可能的,以及我是如何完成的,我对Python和pandas很陌生。如有任何帮助,不胜感激
样本数据:
产品编号 | 产量 | A00 001 |
---|---|
45 | |
56 | |
87 | |
A00 005 | 行 |
5 | |
A00 034 | |
27 | |
34 |
我将使用groupby
和sum
。但是,由于您的数据框在Product Number
列中包含空白,而在Produced Amount
列中包含非数字,我将首先清除它:
tmp = df.assign(**{'Product Number': df['Product Number'].ffill(),
'Produced Amount': pd.to_numeric(df['Produced Amount'], 'coerce')})
:
Product Number Produced Amount
0 A00 001 NaN
1 A00 001 NaN
2 A00 001 45.0
3 A00 001 56.0
4 A00 001 87.0
5 A00 005 NaN
6 A00 005 NaN
7 A00 005 5.0
8 A00 034 NaN
9 A00 034 NaN
10 A00 034 27.0
11 A00 034 34.0
现在是微不足道的:
tmp.groupby('Product Number').sum().astype('int').reset_index()
给出预期结果:
Product Number Produced Amount
0 A00 001 188
1 A00 005 5
2 A00 034 61