Подтвердить что ты не робот

Конвертировать валюту в 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
4b9b3361

Ответ 1

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

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

   Currency
0         1
1      2000
2     -3000

Ответ 2

это если вы хотите убедиться, что его добавили в DataFrame, особенно если у вас много столбцов, которые имеют средний DataFrame, чтобы вы могли работать над ним

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