Python Pandas 用相反的符号替换值
Python Pandas replace values by their opposite sign
我正在尝试 "clean" 一些数据。我的价值观是负面的,但它们不可能是。我想将所有负值替换为相应的正值。
A | B | C
-1.9 | -0.2 | 'Hello'
1.2 | 0.3 | 'World'
我希望这个成为
A | B | C
1.9 | 0.2 | 'Hello'
1.2 | 0.3 | 'World'
到目前为止,我刚刚开始编写替换语句
df.replace(df.loc[(df['A'] < 0) & (df['B'] < 0)],df * -1,inplace=True)
请在正确的方向帮助我
只需调用 abs
:
In [349]:
df = df.abs()
df
Out[349]:
A B
0 1.9 0.2
1 1.2 0.3
另一种方法是创建一个布尔掩码,删除 NaN
行,在索引上调用 loc
并分配负值:
df.loc[df[df<0].dropna().index] = -df
编辑
对于有字符串的情况,以下方法可行:
In [399]:
df[df.columns[df.dtypes != np.object]] = df[df.columns[df.dtypes != np.object]].abs()
df
Out[399]:
A B C
0 1.9 0.2 Hello
1 1.2 0.3 World
你可以这样使用:
首先将列作为字符串:
df['A']=df['A'].astype('str')
df['B']=df['B'].astype('str')
然后使用替换函数:
df['A']=df['A'].str.replace('-','')
df['B']=df['B'].str.replace('-','')
然后将其设为float数据类型:
df['A']=df['A'].astype('float')
df['B']=df['B'].astype('float')
我想这会帮助你解决这个问题。
我正在尝试 "clean" 一些数据。我的价值观是负面的,但它们不可能是。我想将所有负值替换为相应的正值。
A | B | C
-1.9 | -0.2 | 'Hello'
1.2 | 0.3 | 'World'
我希望这个成为
A | B | C
1.9 | 0.2 | 'Hello'
1.2 | 0.3 | 'World'
到目前为止,我刚刚开始编写替换语句
df.replace(df.loc[(df['A'] < 0) & (df['B'] < 0)],df * -1,inplace=True)
请在正确的方向帮助我
只需调用 abs
:
In [349]:
df = df.abs()
df
Out[349]:
A B
0 1.9 0.2
1 1.2 0.3
另一种方法是创建一个布尔掩码,删除 NaN
行,在索引上调用 loc
并分配负值:
df.loc[df[df<0].dropna().index] = -df
编辑
对于有字符串的情况,以下方法可行:
In [399]:
df[df.columns[df.dtypes != np.object]] = df[df.columns[df.dtypes != np.object]].abs()
df
Out[399]:
A B C
0 1.9 0.2 Hello
1 1.2 0.3 World
你可以这样使用:
首先将列作为字符串:
df['A']=df['A'].astype('str')
df['B']=df['B'].astype('str')
然后使用替换函数:
df['A']=df['A'].str.replace('-','')
df['B']=df['B'].str.replace('-','')
然后将其设为float数据类型:
df['A']=df['A'].astype('float')
df['B']=df['B'].astype('float')
我想这会帮助你解决这个问题。