问题:
我有一个数据框,该数据框是从“ csv”文件中导入的,带有如下所示的熊猫(简化示例):
id amount
1 50
1 10
1 5
2 10
2 15
2 25
2 40
因此,想法是将金额相加并将结果添加到具有相同id的所有记录中,如下所示:
id amount total
1 50 65
1 10 65
1 5 65
2 10 90
2 15 90
2 25 90
2 40 90
因此,生成的数据框应包括一个额外的列,该列总计与每个id对应的数量,但保留原始数据帧,为了使其正常工作,不可能对每个ID都记录一个具有该数量的记录。
我正在使用熊猫并处理csv文件。
谢谢!
答案 0 :(得分:2)
使用pandas.join
df.join(df.groupby('id').amount.sum(), rsuffix='_', on = 'id')
输出:
id amount amount_
0 1 50 65
1 1 10 65
2 1 5 65
3 2 10 90
4 2 15 90
5 2 25 90
6 2 40 90
甚至更好(感谢W-B):
df.assign(total = df.groupby('id').amount.transform('sum'))
输出
id amount total
0 1 50 65
1 1 10 65
2 1 5 65
3 2 10 90
4 2 15 90
5 2 25 90
6 2 40 90