2015-07-20 9 views
13

mam df z Waluta:Konwersja waluty float (a nawiasach oznaczają ilość negatywnych)

df = pd.DataFrame({'Currency':['$1.00','$2,000.00','(3,000.00)']}) 

    Currency 
0  $1.00 
1 $2,000.00 
2 (3,000.00) 

chcę przekształcić „waluta” dtype do pływaka, ale mam problemy z nawiasami string (który podać ujemną kwotę). To jest mój bieżący kod:

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

który wywołuje błąd:

ValueError: could not convert string to float: (3000.00) 

Co chcę jak dtype pływak jest:

 Currency 
0  1.00 
1 2000.00 
2 -3000.00 

Odpowiedz

25

Wystarczy dodać ) do istniejącego polecenia, a następnie przekonwertuj ( na -, aby numery w nawiasach były ujemne. Następnie zamień na float.

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

    Currency 
0   1 
1  2000 
2  -3000 
+1

@George tutaj otrzymujesz to od JohnE. szybciej. –

0

to, jeśli chcesz, aby upewnić się jej dodany do DataFrame zwłaszcza jeśli masz dużo kolumn których średnia DataFrame ma tak można pracować na nim

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

Powiązane problemy