Python Pandasは、値を反対の符号に置き換えます

2015年03月27日に質問されました。  ·  閲覧回数 14k回  ·  ソース

eleijonmarck picture
2015年03月27日

一部のデータを「クリーンアップ」しようとしています。 私には負の値がありますが、そうすることはできません。 そして、負の値を対応する正の値に置き換えたいと思います。

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'

今のところ、replaceステートメントを書き始めたところです

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

正しい方向に私を助けてください

回答

EdChum picture
2015年03月27日
13

abs電話するだけです:

In [349]:

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

もう1つの方法は、ブールマスクを作成し、 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
Akash Nayak picture
2018年01月30日
0

次のように使用できます。

最初に列を文字列として作成します。

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

これはこの問題であなたを助けると思います。