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

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *