作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我现在正在使用 Pandas 获取累积总和列。但是,仅当其他列值大于其他列值时,此列才包括累积总和。这是我当前数据的示例:
Index A B C
0 1 20 3
1 10 15 11
2 20 12 25
3 30 18 32
4 40 32 17
5 50 12 4
那我要
cumsum()
栏目
一个 如果列
乙 大于
C ,如果不是,则值为零。结果栏
D 原版
df
应该看起来像:
Index A B C D
0 1 20 3 1
1 10 15 11 11
2 20 12 25 0
3 30 18 32 0
4 40 32 17 40
5 50 12 4 90
我提前感谢任何支持。
最佳答案
可能有更优雅的解决方案,但这也有效。
我们首先创建两个虚拟列 - x 和 x_shift。
df.x 是有条件的,我们保留 df.A 的值,其中 df.B > df.C。
df.x_shift 是我们将值向下移动一行并用 0 填充 na 的地方。
在最后一步,我们有条件地添加 df.A 和 df.x_shift,然后删除 df.x 和 df.x_shift
df['x'] = pd.DataFrame(np.where(df.B>df.C, df.A ,0))
df['x_shift'] = df.x.shift(1).fillna(0)
df['D'] = pd.DataFrame(np.where(df.B >df.C, df.A+df.x_shift,0))
df= df.drop(['x','x_shift'], axis=1
关于python - 如果列值大于其他值,如何在python中创建累积总和列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64127733/
我是一名优秀的程序员,十分优秀!