python-3.x - 用熊猫中的if条件逐列求和
问题描述
我很抱歉,但我不擅长用词,所以我只会举例说明我在寻找什么。
ID date1 date2 date3 date4 date5 date6
001 0 5 10 15 5 40
002 0 20 50 0 10 15
003 5 15 5 30 10 0
如果我有这个项目价格数据框,有没有办法逐列求和并应用条件并更新数据框中的值?(例如,如果 sum < 10 则返回相同的金额,如果 sum >= 10 则返回 2x 金额,如果 >= 50 则返回 3x 金额)
我想得到这个数据框作为结果:
ID date1 date2 date3 date4 date5 date6
001 0 5 20 30 10 120
002 0 40 150 0 30 45
003 5 30 10 90 30 0
在 ID 000 的情况下,date2 保持不变,因为它 < 10,但 date3 是 10x2,因为总金额是 5+10,即 > 10,因此返回金额的两倍,date4 和 date5 也是如此,但 date6 是 x3。
解决方案
您可以点filter
赞date
列然后将cumsum
这些列放在一起axis=1
,最后使用np.select
指定的条件和相应的选项来获得最终结果:
s = df.filter(like='date')
cs = s.cumsum(1) # cummulative sum along axis=1
df[s.columns] = np.select([cs.ge(50), cs.ge(10)], [s*3, s*2], s)
ID date1 date2 date3 date4 date5 date6
0 001 0 5 20 30 10 120
1 002 0 40 150 0 30 45
2 003 5 30 10 90 30 0
推荐阅读
- r - 处理多个 .csv 文件,其中一个的代码,并作为整体输出
- node.js - 更新 Firestore 文档中的所有字段
- javascript - 无法选择加载的 iframe
- jenkins - Jenkins 管道中 Azure 失败的 Terraform 计划
- android - 如何从 firebase 导出无崩溃用户?
- generics - IfExist 在通用存储库中
- javascript - 如何将外部 js lib 用于角度组件测试
- mysql - 有没有办法进行严格的连接?
- c# - 如何在 wpf 中找到导致 LostMouseCapture 事件触发的控件
- postgresql - 生成定义了 id 序列的 nil id,为什么?