特定数量的熊猫重置累积量

时间:2019-05-06 14:25:05

标签: python pandas

我阅读了这篇文章,但我听不懂: 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

2 个答案:

答案 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