python-3.x - 用 Pandas 中的if条件逐列求和

标签 python-3.x pandas

对不起,我不善言辞,所以我只举例说明我在寻找什么。

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/

相关文章:

python - 单击输入按钮

python - 如何复制类变量 - Python

python - 在 Python/Pandas 中使用正则表达式运算符有条件地计算数据条目数

python - Pandas 从列中的值查找索引

python-3.x - 如何将数据框中的多列组合为 Pandas 日期时间格式

arrays - 使用字段名称进行索引时,结构化数组会删除字段标题

python - Tensorflow:子张量的reduce_mean并连接结果

python - 使用来自不同列的条件语句进行分组

python Pandas : Reindex DataFrame after Timezone conversion

python - 仅使用特定 Csv 列的 KMeans 聚类