熊猫:根据条件按行替换值

周杰伦队列

我有一个熊猫数据框,如下所示:

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替换为该行中的value字段的值,并保持零不变。输出应如下所示

   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

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章