Python Pandas replace values ​​with their opposite sign

I am trying to clear some data. I have values ​​that are negative, which they cannot be. And I would like to replace all the values ​​that are negative with their corresponding positive values.

A    | B     | C
-1.9 | -0.2  | 'Hello'
1.2  | 0.3   | 'World'

I wish it became

A    | B     | C
1.9  | 0.2   | 'Hello'
1.2  | 0.3   | 'World'

At the moment, I just started writing a replace statement

df.replace(df.loc[(df['A'] < 0) & (df['B'] < 0)],df * -1,inplace=True)

Please help me in the right direction

+4
source share
2 answers

Just call abs:

In [349]:

df = df.abs()
df
Out[349]:
     A    B
0  1.9  0.2
1  1.2  0.3

Another method would be to create a boolean mask, discard lines NaN, call locin the index and assign negative values:

df.loc[df[df<0].dropna().index] = -df

EDIT

, , :

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
+4

:

:

df['A']=df['A'].astype('str')

df['B']=df['B'].astype('str')

:

df['A']=df['A'].str.replace('-','')

df['B']=df['B'].str.replace('-','')

:

df['A']=df['A'].astype('float')
df['B']=df['B'].astype('float')

, .

0

All Articles