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

Einen Kommentar hinzufügen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert