I have a df with currency:
df = pd.DataFrame({'Currency':['$1.00','$2,000.00','(3,000.00)']})
Currency
0 $1.00
1 $2,000.00
2 (3,000.00)
I want to convert the 'Currency' dtype to float but I am having trouble with the parentheses string (which indicate a negative amount). This is my current code:
df[['Currency']] = df[['Currency']].replace('[\$,]','',regex=True).astype(float)
which produces an error:
ValueError: could not convert string to float: (3000.00)
What I want as dtype float is:
Currency
0 1.00
1 2000.00
2 -3000.00
Just add )
to the existing command, and then convert (
to -
to make numbers in parentheses negative. Then convert to float.
(df['Currency'].replace( '[\$,)]','', regex=True )
.replace( '[(]','-', regex=True ).astype(float))
Currency
0 1
1 2000
2 -3000
this is if you want to make sure its added to the DataFrame especially if you have lots of columns which the average DataFrame has so you can work on it
df['Currency']=(df['Currency'].replace( '[\$,)]','', regex=True )
.replace( '[(]','-', regex=True ).astype(float))
来源:https://stackoverflow.com/questions/31521526/convert-currency-to-float-and-parentheses-indicate-negative-amounts