2017-11-18 2 views
2

Ich habe eine CSV-Datei mit numerischen Werten wie 1524.449677. Es gibt immer genau 6 Nachkommastellen. Wenn ich die csv-Datei (und andere Spalten) über Pandas read_csv importiere, erhält die Spalte automatisch den Datentyp object. Mein Problem ist, dass die Werte als 2470.6911370000003 angezeigt werden, die eigentlich 2470.691137 sein sollten. Oder der Wert 2484.30691 wird als 2484.3069100000002 angezeigt.Pandas lesen CSV-Datei mit Float-Werten ergibt seltsame Rundung und Dezimalstellen

Dies scheint in gewisser Weise ein Datentypproblem zu sein. Ich habe versucht, beim Import über read_csv den Datentyp explizit anzugeben, indem ich das Argument dtype als {'columnname': np.float64} angegeben habe. Dennoch ist das Problem nicht weggegangen.

Wie kann ich die importierten und angezeigten Werte genau so erhalten, wie sie in der csv-Quelldatei enthalten sind?

+0

Wie wäre es mit 'df ['col'] = df ['col']. Astype (float)'? –

+0

ändert nichts – beta

Antwort

2

Pandas verwendet einen dedizierten dec 2 bin Konverter, der die Genauigkeit gegenüber der Geschwindigkeit beeinträchtigt.

Durch float_precision='round_trip' an read_csv zu beheben, behebt dies.

Weitere Informationen hierzu finden Sie unter this page.