我正在尝试从pandas数据框计算一些统计信息。它看起来像这样:
id value conditional
1 10 0
2 20 0
3 30 1
1 15 1
3 5 0
1 10 1
因此,我需要计算每个value
列id
从顶部到底部的累积总和,但仅在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行中的conditional=1
和第1行值不计算时才被采用。我怎么在熊猫中做到这一点?
答案 0 :(得分:8)
您可以创建一个与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