Ich habe einen DataFrame, der Zahlen als Zeichenfolgen mit Kommas für die Tausendermarkierung enthält. Ich muss sie in Schwimmer umwandeln.
a = [['1,200', '4,200'], ['7,000', '-0.03'], [ '5', '0']]
df=pandas.DataFrame(a)
Ich vermute, ich muss locale.atof verwenden. Tatsächlich
df[0].apply(locale.atof)
funktioniert wie erwartet. Ich bekomme eine Reihe von Schwimmern.
Wenn ich es jedoch auf den DataFrame anwende, wird eine Fehlermeldung angezeigt.
df.apply(locale.atof)
TypeError: ("Die Serie kann nicht konvertiert werden in", u'occored at index 0 ')
und
df[0:1].apply(locale.atof)
gibt einen weiteren Fehler:
ValueError: ('ungültiges Literal für float (): 1.200', aufgetreten bei Index 0 ')
Wie konvertiere ich diese DataFrameZeichenfolgen in einen DataFrame von Floats?
applyauf einem DataFrame eine ganze Spalte als Serie an die Funktion übergeben wird (in diesem Falllocale.atofwird eine Zeichenfolge erwartet). Wenn Sie dieapplymapMethode verwenden, die @AndyHayden in der folgenden Antwort verwendet, sollten Sie dies problemlos tun können.