2016-10-20 223 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