Конвертировать валюту в float (и скобки указывают отрицательные суммы)

У меня есть 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)

Я хочу преобразовать dtype 'Currency' в 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
2 ответа

Просто добавьте ) к существующей команде, а затем преобразуйте ( в -, чтобы номера в скобках были отрицательными. Затем конвертируйте в 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))

licensed under cc by-sa 3.0 with attribution.