私は通貨付きの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
既存のコマンドに)
を追加し、次に(
を-
に変換して、括弧内の数値を負にします。次に、floatに変換します。
(df['Currency'].replace( '[\$,)]','', regex=True )
.replace( '[(]','-', regex=True ).astype(float))
Currency
0 1
1 2000
2 -3000
これは、特に平均的なDataFrameにある列がたくさんあるので、それに取り組むことができるように多くの列がある場合に、DataFrameに確実に追加したい場合です
df['Currency']=(df['Currency'].replace( '[\$,)]','', regex=True ) .replace( '[(]','-', regex=True ).astype(float))