Python 熊猫:根据条件按行替换值
我有一个熊猫数据框,如下所示:Python 熊猫:根据条件按行替换值,python,pandas,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字段的值,并保持零不变。输出应该如下所示 amount 1 2 3 4 0 5 5 5 5 5 1 7
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字段的值,并保持零不变。输出应该如下所示
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)
任何帮助都将不胜感激。谢谢让我们使用面具:
输出:
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
让我们用面具:
输出:
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
您也可以通过以下方法完成:
>>> df2.iloc[:, 1:] = df2.iloc[:, 1:].mul(df2['amount'], axis=0)
>>> print(df2)
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
您也可以通过以下方法完成:
>>> df2.iloc[:, 1:] = df2.iloc[:, 1:].mul(df2['amount'], axis=0)
>>> print(df2)
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
只需乘法:0返回0,1返回金额值:df.drop'amount',1.muldf['amount',axis=0但我遇到了错误。请提供完整的错误消息,以及。除此之外,为什么使用0/1而不是实际的布尔值?只需乘以:0返回0,1返回金额值:df.drop'amount',1.muldf['amount',axis=0但我遇到了错误请提供完整的错误消息,以及。撇开Asn不谈,为什么使用0/1而不是实际的布尔值?对于更一般的情况,可以使用df2.maskdf2!=0,df2['amount'],axis=0对于更一般的情况,可以使用df2.maskdf2!=0,df2['amount'],轴=0