将值设置为负数

时间:2021-03-22 13:35:11

标签: pandas

以下代码

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

但这是正确的方法吗?

2 个答案:

答案 0 :(得分:1)

您可以通过 -1 使用多个简化解决方案,它的工作原理与您的解决方案相同:

df.loc[df["item1"]=="-ve","item"] *= -1

或多个 -11 掩码:

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 的回答很有帮助。