Pandas 将该值设置为负值

Pandas 将该值设置为负值,pandas,Pandas,以下代码 import pandas as pd import numpy as np df=pd.DataFrame({"item":[1,2,3,4],"item1":['+ve','-ve','-ve','-ve']}) df.loc[df["item1"]=="-ve","item"]=-df.loc[df["item1"]=="-ve",&quo

以下代码

import pandas as pd
import numpy as np
df=pd.DataFrame({"item":[1,2,3,4],"item1":['+ve','-ve','-ve','-ve']})
df.loc[df["item1"]=="-ve","item"]=-df.loc[df["item1"]=="-ve","item"]
给予

如果
item1
为-ve,我想将
item
设为负值

我使用以下代码

import pandas as pd
import numpy as np
df=pd.DataFrame({"item":[1,2,3,4],"item1":['+ve','-ve','-ve','-ve']})
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

但是,这是正确的方法吗?

您可以通过多个方法简化解决方案,方法是
-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
简化多个解决方案,其工作原理与您的解决方案相同:

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

如果您不想使用
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

您可能会发现答案很有用。

如果您不想使用
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
你们可能会发现这个答案很有帮助