我阅读了这篇文章,但我听不懂: Python pandas cumsum with reset everytime there is a 0
这是我的数据框:
df = pd.DataFrame({'pct':range(10, 20), 'day':[0,1,2,3,4,5,0,1,4,5] })
我想向df
的另一列添加cumsum
的{{1}},并且每次pct
为5时,day
都会重置。
这是我想要的结果:
cumsum
答案 0 :(得分:3)
这是一种使用自定义石斑鱼并将cumsum
放在各个组中的方法:
g = df.day.eq(5).shift(1).cumsum().fillna(0)
df['result'] = df.groupby(g).pct.cumsum()
pct day result
0 10 0 10
1 11 1 21
2 12 2 33
3 13 3 46
4 14 4 60
5 15 5 75
6 16 0 16
7 17 1 33
8 18 4 51
9 19 5 70
答案 1 :(得分:3)
使用:
df['result']=df.groupby(df.day.eq(5).shift().fillna(0).cumsum())['pct'].cumsum()
print(df)
pct day result
0 10 0 10
1 11 1 21
2 12 2 33
3 13 3 46
4 14 4 60
5 15 5 75
6 16 0 16
7 17 1 33
8 18 4 51
9 19 5 70