对不起,我不善言辞,所以我只举例说明我在寻找什么。
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 也是如此,但它是 x3日期6。
最佳答案
您可以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
关于python-3.x - 用 Pandas 中的if条件逐列求和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65489186/