Pandas:根据另一列的值对一列进行累加求和

4
我将尝试从Pandas数据框中计算一些统计数据。它看起来像这样:
id     value     conditional
1      10        0
2      20        0
3      30        1
1      15        1
3      5         0
1      10        1

因此,我需要计算每个idvalue列的累积总和,从上到下,但仅当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

因此,在第4行和第6行中仅在conditional=1时才对id=1的总和进行计算,并且不计算第1行的值。我该如何在pandas中实现这一点?

1个回答

12

您可以创建一个Series,该Series是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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接