作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有以下数据框:
df = pd.DataFrame({'col1':['A','A','A','A','A','A','A','B','B','B','B','B','B','B'],'col2':[1,1,1,0,1,1,1,1,0,1,1,0,0,0],'col3':[.5,.5,.3,.2,.1,.4,.7,.4,.5,.3,.2,.4,.5,.6]})
我需要 col3 的运行总和,但只要 col1 发生变化或 col2 中有零,总和就应该重置。我应该返回如下内容: mock output
我尝试了以下方法:
df['cum'] = df.groupby([df.col1, df.col2]).col3.cumsum()
但是,它没有正确重置。它重置但继续对后续行求和。
最佳答案
在这里拍照
zeros = df.col2.eq(0)
vals = df.groupby(['col1', df.col2.ne(df.col2.shift()).cumsum()]).col3.cumsum()
df['id'] = np.where(zeros, 0, vals)
<小时/>
说明:
每当col2
为0
时,只需设置0
。否则,只需设置分组值的cumsum
。
关于python - 如何在 pandas 中重置 cumsum streak,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51914153/
我是一名优秀的程序员,十分优秀!