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.
df['Currency']=(df['Currency'].replace( '[\$,)]','', regex=True ) .replace( '[(]','-', regex=True ).astype(float))
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With