Skip to main content
 首页 » 编程设计

python之pandas-resetting cumsum 在一个特定的数字

2025年05月04日15dudu

我读了这篇文章,但我无法理解: 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 中添加另一列,显示 pct 的 cumsum 以及每次 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