web-dev-qa-db-ja.com

通貨をフロートに変換します(および括弧は負の金額を示します)

私は通貨付きのdfを持っています:

df = pd.DataFrame({'Currency':['$1.00','$2,000.00','(3,000.00)']})

     Currency
0       $1.00
1   $2,000.00
2  (3,000.00)

'Currency' dtypeをfloatに変換したいのですが、括弧文字列(負の値を示す)に問題があります。これは私の現在のコードです:

df[['Currency']] = df[['Currency']].replace('[\$,]','',regex=True).astype(float)

エラーが発生します:

ValueError: could not convert string to float: (3000.00)

私がdtype floatとして欲しいのは:

     Currency
0       1.00
1   2000.00
2  -3000.00
20
I am not George

既存のコマンドに)を追加し、次に(-に変換して、括弧内の数値を負にします。次に、floatに変換します。

(df['Currency'].replace( '[\$,)]','', regex=True )
               .replace( '[(]','-',   regex=True ).astype(float))

   Currency
0         1
1      2000
2     -3000
33
JohnE

これは、特に平均的なDataFrameにある列がたくさんあるので、それに取り組むことができるように多くの列がある場合に、DataFrameに確実に追加したい場合です

df['Currency']=(df['Currency'].replace( '[\$,)]','', regex=True ) .replace( '[(]','-', regex=True ).astype(float))

0
Redz Ch