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

sfa*_*tor 4 python cumulative-sum pandas

我试图从熊猫数据框计算一些统计数据.它看起来像这样:

id     value     conditional
1      10        0
2      20        0
3      30        1
1      15        1
3      5         0
1      10        1
Run Code Online (Sandbox Code Playgroud)

因此,我需要计算value每个id从顶部到botom 的列的累积总和,但仅在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
Run Code Online (Sandbox Code Playgroud)

因此,id=1仅conditional=1在第4行和第6行中采用总和,并且不计算第1行值.我怎么在熊猫里这样做?

ayh*_*han 9

您可以创建一个系列,它是和的乘法,value并conditional为每个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
Run Code Online (Sandbox Code Playgroud)