Oplossing in panda's: kan tekenreeks niet omzetten naar zwevend
Een veel voorkomende fout die u kunt tegenkomen bij het gebruik van panda’s is:
ValueError : could not convert string to float: '$400.42'
Deze fout treedt meestal op wanneer u een tekenreeks probeert te converteren zodat deze in panda’s zweeft, terwijl de tekenreeks een of meer van de volgende elementen bevat:
- De ruimtes
- Komma’s
- Speciale karakters
Wanneer dit gebeurt, moet u deze tekens eerst uit de string verwijderen voordat u deze naar een float converteert.
Het volgende voorbeeld laat zien hoe u deze fout in de praktijk kunt oplossen.
Hoe de fout te reproduceren
Stel dat we de volgende panda’s DataFrame hebben:
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
Stel nu dat we proberen de inkomstenkolom om te zetten van een string naar een float:
#attempt to convert 'revenue' from string to float
df[' revenue '] = df[' revenue ']. astype (float)
ValueError : could not convert string to float: '$400.42'
We ontvangen een foutmelding omdat de inkomstenkolom een dollarteken in de tekenreeksen bevat.
Hoe u de fout kunt oplossen
De manier om deze fout op te lossen is door de functie Replace() te gebruiken om de dollartekens in de inkomstenkolom door niets te vervangen voordat de conversie wordt uitgevoerd:
#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
Houd er rekening mee dat we de omzetkolom van een string naar een zwevende kolom kunnen converteren en dat we geen fouten ontvangen omdat we de dollartekens hebben verwijderd voordat we de conversie uitvoerden.
Aanvullende bronnen
In de volgende tutorials wordt uitgelegd hoe u andere veelvoorkomende fouten in Python kunt oplossen:
Oplossing in Python: Object ’numpy.ndarray‘ kan niet worden opgevraagd
Oplossing: TypeError: Object ’numpy.float64′ kan niet worden opgevraagd
Oplossing: Typefout: verwacht tekenreeks- of bytesobject