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
你们可能会发现这个答案很有帮助