我正在尝试将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'
如果我尝试访问任何其他列,例如“打开”或“音量”,则按预期工作
答案 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')