Ich bin durch etwas in Pandas 0.18.0 verwirrt. In meinen Eingabe-CSV-Daten soll ein Feld Daten als JJJJMMTT-Zeichenfolgen enthalten, aber bei einigen Zeilen fehlt oder falsch formatiert. Ich möchte diese Spalte als datetime mit Daten darstellen, wo möglich und wo nicht.Warum erzeugt to_datetime nur fehlende Werte für eine Float-Spalte in Pandas?
versuchte ich mehrere Optionen, und was ich am weitesten nicht wurde mit parse_dates
auf den Tisch (mit read_table
) in zu lesen, aber dann mit pandas.to_datetime(DataFrame['Seriesname'], errors='coerce',format='%Y%m%d')
die Umwandlung Nötigung. Dies ist robust gegenüber Tippfehlern, wo die Zahl kein Datum darstellen kann (denken Sie an '20100231', Spalte zuerst als int64
importiert) oder wenn die Zeichenfolge überhaupt keine Zahl darstellt (denken Sie an '2o1oo228', Spalte an object
beim Importieren).
Diese Methode ist nicht robust, wenn die Spalten nur Zahlen enthalten, aber ein Feld leer ist. Dann read_table
importiert die gesamte Spalte als float64
(keine int64
, die keine fehlenden Werte in numpy hat), und die obige Konvertierung erzeugt alle fehlenden, auch für Zeilen, in denen die Daten sinnvoll sind.
Gibt es einen Weg um dies?
Was meinst du mit "keine Konvertierung"? Können Sie nicht einfach die Konvertierungsoptionen so einstellen, dass diese Spalte als String bleibt? – BrenBarn
@BrenBarn Siehe die Bearbeitung, danke. –