我有一个看起来像下面的数据框。
d = {'location': ['canada', 'canada', 'italy', 'italy'], 'item': ['coke', 'coke', 'pepsi', 'coke'], 'weight': [1, 1, 2, 1]}
df = pd.DataFrame(data=d)
df
location item weight
0 canada coke 1
1 canada coke 1
2 italy pepsi 2
3 italy coke 1
在数据框中,位置的每一行都应具有唯一的商品名称和相应的商品重量。但是,由于数据质量问题,有时会多次报告项目。在这种情况下,我想对多个项目的权重求和,然后显示单个项目的总权重。
结果看起来像这样
df
location item weight
0 canada coke 2
1 italy pepsi 2
2 italy coke 1
最佳答案
您可以使用转换,然后删除重复项。
d = {'location': ['canada', 'canada', 'italy', 'italy'], 'item': ['coke', 'coke', 'pepsi', 'coke'], 'weight': [1, 1, 2, 1]}
df = pd.DataFrame(data=d)
df['weight'] = df.groupby(['location', 'item']).transform('sum')
df = df.drop_duplicates()
df.reset_index(drop=True)
Out[1]:
location item weight
0 canada coke 2
1 italy pepsi 2
2 italy coke 1
关于python - Pandas groupby和汇总重复项,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/58811837/