我有一个熊猫数据框,如下所示:
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] 删除。
我来说两句