基于ID的累积SUM

时间:2019-01-24 20:49:22

标签: python pandas

问题:

我有一个数据框,该数据框是从“ 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文件。

谢谢!

1 个答案:

答案 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