2017-12-02 7 views
0

Ich habe eine CSV-Datei mit 7 Spalten ['Datum', 'Zeit', 'Offen', 'Hoch', 'Niedrig', 'Schließen', 'Volumen'] Die Sache ist ich habe versucht, einen Datetime-Index zu setzen, aber es funktioniert nicht, weil Datum und Uhrzeit zwei getrennte Spalten sind. HierPandas Datum Zeit Fehler

ist der Code:

import pandas as pd 

column_names = ['Date', 'Time', 'Open', 'High', 'Low','Close', 'Volume'] 

df = pd.read_csv(r"E:\Tutorial\EURUSD60.csv", header=None, names=column_names) 

df['DateTime'] = pd.to_datetime(df['Date', 'Time']) 

print(df.head()) 

Hier wird der Fehler:

C:\Users\sydgo\Anaconda3\python.exe E:/Tutorial/language.py Traceback (most recent call last): File "C:\Users\sydgo\Anaconda3\lib\site-packages\pandas\core\indexes\base.py", line 2442, in get_loc return self._engine.get_loc(key) File "pandas_libs\index.pyx", line 132, in pandas._libs.index.IndexEngine.get_loc File "pandas_libs\index.pyx", line 154, in pandas._libs.index.IndexEngine.get_loc File "pandas_libs\hashtable_class_helper.pxi", line 1210, in pandas._libs.hashtable.PyObjectHashTable.get_item File "pandas_libs\hashtable_class_helper.pxi", line 1218, in pandas._libs.hashtable.PyObjectHashTable.get_item KeyError: ('Date', 'Time')

During handling of the above exception, another exception occurred:

Traceback (most recent call last): File "E:/Tutorial/language.py", line 7, in df['DateTime'] = pd.to_datetime(df['Date', 'Time']) File "C:\Users\sydgo\Anaconda3\lib\site-packages\pandas\core\frame.py", line 1964, in getitem return self._getitem_column(key) File "C:\Users\sydgo\Anaconda3\lib\site-packages\pandas\core\frame.py", line 1971, in _getitem_column return self._get_item_cache(key) File "C:\Users\sydgo\Anaconda3\lib\site-packages\pandas\core\generic.py", line 1645, in _get_item_cache values = self._data.get(item) File "C:\Users\sydgo\Anaconda3\lib\site-packages\pandas\core\internals.py", line 3590, in get loc = self.items.get_loc(item) File "C:\Users\sydgo\Anaconda3\lib\site-packages\pandas\core\indexes\base.py", line 2444, in get_loc return self._engine.get_loc(self._maybe_cast_indexer(key)) File "pandas_libs\index.pyx", line 132, in pandas._libs.index.IndexEngine.get_loc File "pandas_libs\index.pyx", line 154, in pandas._libs.index.IndexEngine.get_loc File "pandas_libs\hashtable_class_helper.pxi", line 1210, in pandas._libs.hashtable.PyObjectHashTable.get_item File "pandas_libs\hashtable_class_helper.pxi", line 1218, in pandas._libs.hashtable.PyObjectHashTable.get_item KeyError: ('Date', 'Time')

+0

Diese https: // stackoverflow.com/a/46483409/4800652 könnte helfen – Dark

Antwort

0

Wenn Sie Ihren Code vereinfachen, werden Sie den Fehler sehen, ist hier richtig:

df['Date', 'Time'] 

Das liegt daran, dass Sie einmal mit zwei Strings in den DataFrame indizieren, aber zweimal mit jedem von zwei Strings indizieren möchten Ringe. Das heißt:

df[['Date', 'Time']] 

Dennoch kann dies nicht gelingen, weil to_datetime Strings erwartet, nicht Paare von Strings:

pd.to_datetime(df['Date', 'Time']) 

In diesem Fall wird dies versuchen:

pd.to_datetime(df.Date + ' ' + df.Time)