Python Pandas用相反的符号替换值

2024-05-23 23:36:12 发布

您现在位置:Python中文网/ 问答频道 /正文

我正试图“清理”一些数据。我的价值观是消极的,但它们不可能是消极的。我想把所有负值替换成相应的正值。

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)

请帮我朝正确的方向走


Tags: 数据truehellodfworld语句方向loc
2条回答

你可以这样使用:

首先将列作为字符串:

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')

我想这对你解决这个问题有帮助。

打电话给^{}

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

相关问题 更多 >