Ich lief in diesem Fehler beim Analysieren der wenigen Daten durch ParseDates von . Im folgenden Codefragment versuche ich Daten mit dem Format dd/mm/yy
zu analysieren, was zu einer fehlerhaften Konvertierung führt. In einigen Fällen wird das Datumsfeld als Monat betrachtet und umgekehrt.pd.read_csv Datum/Monat Feld nicht korrekt analysieren, wenn parse_date = ['Spaltenname'] eingestellt
Um es einfach zu halten, in einigen Fällen dd/mm/yy
erhalten konvertiert yyyy-dd-mm
statt yyyy-mm-dd
.
Fall 1:
04/10/96 is parsed as 1996-04-10, which is wrong.
Fall 2:
15/07/97 is parsed as 1997-07-15, which is correct.
Fall 3:
10/12/97 is parsed as 1997-10-12, which is wrong.
Codebeispiel
import pandas as pd
df = pd.read_csv('date_time.csv')
print 'Data in csv:'
print df
print df['start_date'].dtypes
print '----------------------------------------------'
df = pd.read_csv('date_time.csv', parse_dates = ['start_date'])
print 'Data after parsing:'
print df
print df['start_date'].dtypes
Stromausgang
----------------------
Data in csv:
----------------------
start_date
0 04/10/96
1 15/07/97
2 10/12/97
3 06/03/99
4 //1994
5 /02/1967
object
----------------------
Data after parsing:
----------------------
start_date
0 1996-04-10
1 1997-07-15
2 1997-10-12
3 1999-06-03
4 1994-01-01
5 1967-02-01
datetime64[ns]
Erwartete Ausgabe
----------------------
Data in csv:
----------------------
start_date
0 04/10/96
1 15/07/97
2 10/12/97
3 06/03/99
4 //1994
5 /02/1967
object
----------------------
Data after parsing:
----------------------
start_date
0 1996-10-04
1 1997-07-15
2 1997-12-10
3 1999-03-06
4 1994-01-01
5 1967-02-01
datetime64[ns]
Mehr Kommentare:
I date_parser
oder pandas.to_datetime()
geben Sie das richtige Format für das Datum verwenden könnte. Aber in meinem Fall habe ich einige Datumsfelder wie ['//1997', '/02/1967']
für die ich ['01/01/1997','01/02/1967']
konvertieren muss. Die parse_dates
hilft mir bei der Konvertierung dieser Art von Datumsfeldern in das erwartete Format, ohne dass ich eine zusätzliche Codezeile schreiben muss.
Gibt es dafür eine Lösung?
Bug [email protected]: https://github.com/pydata/pandas/issues/13063
Haben Sie auf die neueste Version 0.18 von Pandas Aktualisierung versuchen? Ist das Problem immer noch da? –
Haben Sie versucht, 'infer_datetime_format' auf' True' zu setzen? – IanS
Ich habe genau das gleiche Problem! Meine vorübergehende Lösung bestand darin, die Werte aus einer Excel-Datei (anstelle von CSV) zu lesen, wobei die Daten gemäß den lokalen Einstellungen des Systems analysiert werden, aber ich weiß, dass dies keine Lösung ist, die für die meisten Entwickler geeignet ist. Sie erhalten korrekte Daten, wenn der Tag> 12 ist, da Pandas erkennen, dass es kein Monatswert sein kann. – Shovalt