2016-10-20 9 views
2

パンダのデータフレームからいくつかの統計を計算しようとしています。パンダ:別の値に基づいた1つの列の累積合計

id  value  conditional 
1  10  0 
2  20  0 
3  30  1 
1  15  1 
3  5   0 
1  10  1 

だから、私は上からbotom各idの列valueの累積合計を計算する必要がありますが、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=1id=1の和が取られ、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 
関連する問題