熊猫:根据另一个值的一列的累积总和
问题描述:
我想从熊猫数据框中计算出一些统计数据。它看起来是这样的:熊猫:根据另一个值的一列的累积总和
id value conditional
1 10 0
2 20 0
3 30 1
1 15 1
3 5 0
1 10 1
所以,我需要计算列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
所以,id=1
总和仅服用时在第4和第6行,第1行的值conditional=1
不计算在内。我如何在熊猫中做到这一点?
答
您可以创建一个系列即是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