python - pandas:根据条件按行替换值
问题描述
我有一个熊猫数据框,如下所示:
df2
amount 1 2 3 4
0 5 1 1 1 1
1 7 0 1 1 1
2 9 0 0 0 1
3 8 0 0 1 0
4 2 0 0 0 1
我想要做的是将每一行上的 1 替换为该行中金额字段的值,并将零保留原样。输出应如下所示
amount 1 2 3 4
0 5 5 5 5 5
1 7 0 7 7 7
2 9 0 0 0 9
3 8 0 0 8 0
4 2 0 0 0 2
我试过像这样逐行应用 lambda 函数,但我遇到了错误
df2.apply(lambda x: x.loc[i].replace(0, x['amount']) for i in len(x), axis=1)
任何帮助将非常感激。谢谢
解决方案
让我们使用mask
:
df2.mask(df2 == 1, df2['amount'], axis=0)
输出:
amount 1 2 3 4
0 5 5 5 5 5
1 7 0 7 7 7
2 9 0 0 0 9
3 8 0 0 8 0
4 2 0 0 0 2
推荐阅读
- python - ValueError:张量转换为 dtype float32 的张量请求 dtype int32 - LSTM 实现(张量流 2.0.0)
- java - 从 Excel 工作表中获取数据时出现空指针异常
- python - 为什么选择numpy数组元素时不能使用AND运算符?
- javascript - ReactTable v7 - noDataText 未显示在空数据上(使用 useTableHook)
- python - 我对有关 python 多处理问题的问题感到困惑
- android - 将位图图像保存到画廊 android 10 的特定位置
- javascript - 如何使用 Jquery 获取类中每个项目的文本
- c - 以 K 个节点为一组反转的链表
- php - 安排会议算法
- c# - Unity 中带有 NAudio WaveOut 的 PlatformNotSupportedException