我有一个看起来像下面的数据框。

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/

10-12 04:54