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 DataFrame
Zeichenfolgen in einen DataFrame von Floats?
apply
auf einem DataFrame eine ganze Spalte als Serie an die Funktion übergeben wird (in diesem Falllocale.atof
wird eine Zeichenfolge erwartet). Wenn Sie dieapplymap
Methode verwenden, die @AndyHayden in der folgenden Antwort verwendet, sollten Sie dies problemlos tun können.