2016-10-20 144 views
2

我想从熊猫数据框中计算出一些统计数据。它看起来是这样的:熊猫:根据另一个值的一列的累积总和

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不计算在内。我如何在熊猫中做到这一点?

回答

7

您可以创建一个系列即是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