Ich habe eine CSV-Datei, die, vereinfacht, sieht wie folgt aus:pandas.read_csv: Wie analysiere ich zwei Spalten als Datumswerte in einer hierarchisch indizierten CSV?
X,,Y,,Z,
Date,Time,A,B,A,B
2017-01-21,01:57:49.390,0,1,2,3
2017-01-21,01:57:50.400,4,5,7,9
2017-01-21,01:57:51.410,3,2,4,1
Die ersten beiden Spalten Datum und Uhrzeit sind. Wenn ich das tue“
pandas.read_csv('foo.csv', header=[0,1])
ich folgenden Datenrahmen erhalten:
X Unnamed: 1_level_0 Y Unnamed: 3_level_0 Z Unnamed: 5_level_0
Date Time A B A B
0 2017-01-21 01:57:49.390 0 1 2 3
1 2017-01-21 01:57:50.400 4 5 7 9
2 2017-01-21 01:57:51.410 3 2 4 1
die lästigen unbenannte Einträge in den Spalten Ignoriert jetzt, würde Ich mag die ersten beiden Spalten in einen einzigen Datetime kombinieren. Also habe ich versucht, das parse_dates Argument:
pandas.read_csv('foo.csv', header=[0,1], parse_dates={'datetime': [0,1]})
Aber alles, was ich von diesem erhalten, ist eine Zurückverfolgungs:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/local/lib/python2.7/dist-packages/pandas/io/parsers.py", line 646, in parser_f
return _read(filepath_or_buffer, kwds)
File "/usr/local/lib/python2.7/dist-packages/pandas/io/parsers.py", line 401, in _read
data = parser.read()
File "/usr/local/lib/python2.7/dist-packages/pandas/io/parsers.py", line 939, in read
ret = self._engine.read(nrows)
File "/usr/local/lib/python2.7/dist-packages/pandas/io/parsers.py", line 1585, in read
names, data = self._do_date_conversions(names, data)
File "/usr/local/lib/python2.7/dist-packages/pandas/io/parsers.py", line 1364, in _do_date_conversions
self.index_names, names, keep_date_col=self.keep_date_col)
File "/usr/local/lib/python2.7/dist-packages/pandas/io/parsers.py", line 2737, in _process_date_conversion
data_dict.pop(c)
KeyError: "('X', 'Date')"
Ich bin mir nicht sicher, warum es eine KeyError
auf ('X', 'Date')
trifft, da diese definitiv in den Spalten vorhanden sind. Ich weiß nicht wirklich, ob das ein Fehler in pandas
ist, den ich melden sollte (ich benutze 0.19.2), oder wenn ich gerade etwas nicht verstehe. Irgendwelche Ideen?
yup, scheint wie ein Fehler. Ich habe mit den verschiedenen Optionen herumgespielt, und die, die am besten in Ihrer Situation funktioniert, ist, die Spalten 0 und 1 als Index anzugeben und den Index als Datum zu analysieren, d. 'pd.read_csv ('foo.csv', Kopfzeile = [0,1], Parsedate = True, Index_cols [0,1])'. Dieses Problem zu melden wäre eine gute Idee. –
Ich habe eine PR für dieses Problem eingereicht. Siehe meine Antwort. –
Update: PR wurde für die Veröffentlichung "0.20.0" freigegeben –