我正在寻找熊猫/ python解决方案来根据发票的主要代码来汇总/分组发票中的物品。 请参考第一张所附图片
具有MainCode的每个项目值(价格X数量)应添加到项目总数中。寻找类似的颜色。 (请注意,有些项目可能会重复。例如:绿色和蓝色)不应添加数量。仅值。
我是Pandas的新手,由于这是一个高级问题,所以我无法提供任何代码。因此,张贴在这里。请指示我解决这个问题...
注意事项
答案 0 :(得分:1)
希望您喜欢它。下次,请不要以图像形式而是以文本形式提供输入数据。
import pandas as pd
data_raw = [[260, 1500, 3, 0, 4500], [260, 1500, 1, 0, 1500], [258, 1500, 4, 0, 6000], [1054, 1200, 1, 0, 1200],
[371, 700, 3, 260, 2100], [371, 700, 1, 260, 700], [371, 700, 1, 1054, 700], [371, 700, 4, 258, 2800]]
data = pd.DataFrame(data_raw, columns=['item', 'price', 'qty','Main code','Total'])
remove_index= []
for index, row in data.iterrows():
try:
# find item in Main code
main_code_data = data.loc[data['Main code'] == row['item']]
# merge values
data.at[index, 'Total'] = row['Total'] + row['qty']* (main_code_data['Total'].values[0]/main_code_data['qty'].values[0])
# get indexes to remove
for item in main_code_data.index:
remove_index.append(item)
except:
# if no match
pass
# remove used lines
data = data.drop(remove_index)
输出:
item price qty Main code Total
0 260 1500 3 0 6600
1 260 1500 1 0 2200
2 258 1500 4 0 8800
3 1054 1200 1 0 1900