熊猫:基于另一列的值的一列的累积总和

时间:2016-10-20 16:12:42

标签: python pandas cumulative-sum

我正在尝试从pandas数据框计算一些统计信息。它看起来像这样:

id     value     conditional
1      10        0
2      20        0
3      30        1
1      15        1
3      5         0
1      10        1

因此,我需要计算每个valueid从顶部到底部的累积总和,但仅在conditional为1时才计算。

所以,这应该给我一些:

id     value     conditional   cumulative sum
1      10        0             0
2      20        0             0
3      30        1             30
1      15        1             15
3      5         0             30
1      10        1             25

因此,id=1的总和仅在第4行和第6行中的conditional=1和第1行值不计算时才被采用。我怎么在熊猫中做到这一点?

1 个答案:

答案 0 :(得分:8)

您可以创建一个与valueconditional相乘的系列,并为每个ID组获取累计总和:

df['cumsum'] = (df['value']*df['conditional']).groupby(df['id']).cumsum()
df
Out: 
   id  value  conditional  cumsum
0   1     10            0       0
1   2     20            0       0
2   3     30            1      30
3   1     15            1      15
4   3      5            0      30
5   1     10            1      25