索引Pandas数据帧时的KeyError

时间:2014-05-19 07:00:48

标签: python pandas

我正在尝试将csv文件中的数据读入pandas数据帧,并访问第一列'Date'

import pandas as pd
df_ticks=pd.read_csv('values.csv', delimiter=',')
print(df_ticks.columns)
df_ticks['Date']

产生以下结果

Index([u'Date', u'Open', u'High', u'Low', u'Close', u'Volume'], dtype='object')
KeyError: u'no item named Date'

如果我尝试访问任何其他列,例如“打开”或“音量”,则按预期工作

2 个答案:

答案 0 :(得分:31)

正如alko所提到的,它可能是文件开头的额外字符。 使用read_csv时,您可以指定encoding来处理编码和标题字符,称为BOM (Byte order mark)

df = pd.read_csv('values.csv', delimiter=',', encoding="utf-8-sig")

这个问题在Stackoverflow上找到了一些回音: Pandas seems to ignore first column name when reading tab-delimited data, gives KeyError

答案 1 :(得分:19)

您最有可能在文件的开头添加一个额外的字符,该字符会添加到您的第一个列名'Date'之前。只需将输出复制/粘贴到非unicode控制台即可生成。

Index([u'?Date', u'Open', u'High', u'Low', u'Close', u'Volume'], dtype='object')