Jak naprawić w pandach: nie można przekonwertować ciągu na zmiennoprzecinkowy
Częstym błędem, jaki możesz napotkać podczas korzystania z pand, jest:
ValueError : could not convert string to float: '$400.42'
Ten błąd zwykle występuje, gdy próbujesz przekonwertować ciąg znaków na pływający w pandach, gdy ciąg zawiera jeden lub więcej z następujących elementów:
- Przestrzenie
- Przecinki
- Znaki specjalne
Gdy tak się stanie, należy najpierw usunąć te znaki z łańcucha przed przekształceniem go w liczbę zmiennoprzecinkową.
Poniższy przykład pokazuje, jak w praktyce rozwiązać ten błąd.
Jak odtworzyć błąd
Załóżmy, że mamy następującą ramkę DataFrame pand:
import pandas as pd #createDataFrame df = pd. DataFrame ({' store ': ['A', 'B', 'C', 'D'], ' revenue ': ['$400.42', '$100.18', '$243.75', '$194.22']}) #view DataFrame print (df) store revenue 0 A $400.42 1 B $100.18 2 C $243.75 3D $194.22 #view data type of each column print ( df.dtypes ) store object revenue object dtype:object
Załóżmy teraz, że próbujemy przekonwertować kolumnę przychodów z ciągu znaków na liczbę zmiennoprzecinkową:
#attempt to convert 'revenue' from string to float
df[' revenue '] = df[' revenue ']. astype (float)
ValueError : could not convert string to float: '$400.42'
Otrzymujemy błąd, ponieważ kolumna dochodu zawiera w ciągach znak dolara.
Jak naprawić błąd
Sposobem na rozwiązanie tego błędu jest użycie funkcji zamiany() w celu zamiany znaków dolara w kolumnie dochodu na nic przed wykonaniem konwersji:
#convert revenue column to float
df[' revenue '] = df[' revenue ']. apply ( lambda x: float(x. split ()[ 0 ]. replace (' $ ', '')))
#view updated DataFrame
print (df)
store revenue
0 to 400.42
1 B 100.18
2 C 243.75
3 D 194.22
#view data type of each column
print ( df.dtypes )
store object
income float64
dtype:object
Należy pamiętać, że jesteśmy w stanie przekonwertować kolumnę przychodów z ciągu znaków na liczbę zmiennoprzecinkową i nie otrzymujemy żadnych błędów, ponieważ przed konwersją usunęliśmy znaki dolara.
Dodatkowe zasoby
Poniższe samouczki wyjaśniają, jak naprawić inne typowe błędy w Pythonie:
Jak naprawić w Pythonie: Obiektu „numpy.ndarray” nie można wywołać
Jak naprawić: TypeError: Obiekt „numpy.float64” nie jest wywoływalny
Jak naprawić: Błąd typu: Oczekiwany obiekt typu String lub Bytes