Beim Speichern eines Pandas DataFrame in CSV werden einige Ganzzahlen in Gleitkommazahlen konvertiert. Es passiert, wo eine Spalte von Floats fehlende Werte hat (np.nan
).Exportieren von Ints mit fehlenden Werten in CSV in Pandas
Gibt es eine einfache Möglichkeit, dies zu vermeiden? (Vor allem in einer automatischen Art und Weise -. Ich habe oft mit vielen Spalten verschiedenen Datentypen befassen)
Zum Beispiel
import pandas as pd
import numpy as np
df = pd.DataFrame([[1,2],[3,np.nan],[5,6]],
columns=["a","b"],
index=["i_1","i_2","i_3"])
df.to_csv("file.csv")
Erträge
,a,b
i_1,1,2.0
i_2,3,
i_3,5,6.0
Was würde ich bekommen sind
,a,b
i_1,1,2
i_2,3,
i_3,5,6
EDIT: Ich bin voll bewusst von Support for integer NA - Pandas Caveats and Gotchas. Die Frage ist, was ist eine nette Abhilfe (vor allem in dem Fall, wenn es viele andere Spalten verschiedener Typen gibt und ich nicht im Voraus weiß, welche "Integer" -Spalten fehlende Werte haben).
Warum ist das ein Problem , es gibt keine Möglichkeit, 'NaN' für Ints darzustellen, daher die Umwandlung in Floats. Sie müssten die 'NaN'-Werte durch etwas ersetzen, das als ein int wie' 0' dargestellt werden kann, oder in eine Zeichenfolge umwandeln und die 'nan'-Zeichenfolge durch einen leeren Wert ersetzen und dann exportieren – EdChum
@EdChum NaN' sind Schwimmer. Es ist einfach ärgerlich, dass es kein "fehlendes int" gibt (aus der Datenperspektive - ein fehlendes Feld ist ein fehlendes Feld; an fehlenden Floats gibt es nichts Besonderes). Die Sache ist, dass ich kein fehlendes int als '0' exportieren möchte, sondern ein leeres Feld (für einige Anwendungen konvertiere ich fehlende Ints in '-1', aber für andere könnte es problematisch sein). –
@PiotrMigdal Ich denke, deine einzige Chance hier in diesem Fall ist es, in Strings zu konvertieren und Nan mit leeren Zeichenfolgen zu füllen, wie bereits vorgeschlagen – Korem