我读了这篇文章,但我听不懂:
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中添加另一列,以显示cumsumpct,并且每次day为5时,cumsum都会重置。
这是我想要的结果:

   day  pct  result
0    0   10      10
1    1   11      21
2    2   12      33
3    3   13      46
4    4   14      60
5    5   15      75
6    0   16      16
7    1   17      33
8    4   18      51
9    5   19      70

最佳答案

这是一种使用自定义石斑鱼并将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

关于python - 特定数量的 Pandas 重置累积量,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/56007165/

10-12 00:12