以下代码
import pandas as pd
import numpy as np
df=pd.DataFrame({"item":[1,2,3,4],"item1":['+ve','-ve','-ve','-ve']})
给予
item item1
0 1 +ve
1 2 -ve
2 3 -ve
3 4 -ve
如果 item
是 -ve,我想让 item1
为负值
我使用以下代码
df.loc[df["item1"]=="-ve","item"]=-df.loc[df["item1"]=="-ve","item"]
我得到了正确的输出:
item item1
0 1 +ve
1 -2 -ve
2 -3 -ve
3 -4 -ve
但这是正确的方法吗?
答案 0 :(得分:1)
您可以通过 -1
使用多个简化解决方案,它的工作原理与您的解决方案相同:
df.loc[df["item1"]=="-ve","item"] *= -1
或多个 -1
或 1
掩码:
df["item"] *= np.where(df["item1"]=="-ve", -1, 1)
print (df)
item item1
0 1 +ve
1 2 -ve
2 3 -ve
3 4 -ve
答案 1 :(得分:1)
如果不想使用loc
,可以使用np.where
:
df['item']=np.where(df['item1']=='-ve',df['item'].mul(-1),df['item'])
df
item item1
0 1 +ve
1 -2 -ve
2 -3 -ve
3 -4 -ve
您可能会发现 this 的回答很有帮助。