如何解决Pandas代码中的日期时间错误?

时间:2017-12-02 12:39:22

标签: python pandas

我有一个包含7列['Date', 'Time', 'Open', 'High', 'Low', 'Close', 'Volume']的csv文件 问题是我试图设置一个日期时间索引,但它不起作用可能是因为日期和时间是两个单独的列。

以下是代码:

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())

这是错误:

  

C:\ Users \ sydgo \ Anaconda3 \ python.exe E:/Tutorial/language.py Traceback   (最近一次调用最后一次):文件   " C:\用户\ sydgo \ Anaconda3 \ lib中\站点包\大熊猫\芯\索引\ base.py&#34 ;,   第2442行,在get_loc中       返回self._engine.get_loc(key)文件" pandas_libs \ index.pyx",第132行,在pandas._libs.index.IndexEngine.get_loc文件中   " pandas_libs \ index.pyx",第154行,in   pandas._libs.index.IndexEngine.get_loc文件   " pandas_libs \ hashtable_class_helper.pxi",第1210行,在   pandas._libs.hashtable.PyObjectHashTable.get_item文件   " pandas_libs \ hashtable_class_helper.pxi",第1218行,在   pandas._libs.hashtable.PyObjectHashTable.get_item KeyError:(' Date',   '时间&#39)

     

在处理上述异常期间,发生了另一个异常:

     

回溯(最近一次调用最后一次):文件" E:/Tutorial/language.py",   7号线,在       df ['日期时间'] = pd.to_datetime(df ['日期','时间'])文件" C:\ Users \ sydgo \ Anaconda3 \ lib中\站点包\大熊猫\芯\ frame.py&#34 ;,   第1964行, getitem       return self._getitem_column(key)File" C:\ Users \ sydgo \ Anaconda3 \ lib \ site-packages \ pandas \ core \ frame.py",   第1971行,在_getitem_column中       return self._get_item_cache(key)File" C:\ Users \ sydgo \ Anaconda3 \ lib \ site-packages \ pandas \ core \ generic.py",   第1645行,在_get_item_cache中       values = self._data.get(item)文件" C:\ Users \ sydgo \ Anaconda3 \ lib \ site-packages \ pandas \ core \ internals.py",   3590行,在得到       loc = self.items.get_loc(item)File" C:\ Users \ sydgo \ Anaconda3 \ lib \ site-packages \ pandas \ core \ indexes \ base.py",   第2444行,在get_loc中       return self._engine.get_loc(self._maybe_cast_indexer(key))File" pandas_libs \ index.pyx",第132行,in   pandas._libs.index.IndexEngine.get_loc文件   " pandas_libs \ index.pyx",第154行,in   pandas._libs.index.IndexEngine.get_loc文件   " pandas_libs \ hashtable_class_helper.pxi",第1210行,在   pandas._libs.hashtable.PyObjectHashTable.get_item文件   " pandas_libs \ hashtable_class_helper.pxi",第1218行,在   pandas._libs.hashtable.PyObjectHashTable.get_item KeyError:(' Date',   '时间&#39)

1 个答案:

答案 0 :(得分:1)

如果您简化了代码,则会在此处看到错误:

df['Date', 'Time']

那是因为你通过两个字符串索引DataFrame一次,但是你希望通过两个字符串中的每个字符串将其索引两次。那就是:

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

但是,这可能会失败,因为to_datetime需要字符串,而不是字符串对:

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

在这种情况下试试这个:

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