天天看点

python读取csv时keyerror_python – 错误:pandas hashtable keyerror

我已经使用pandas成功读取了一个csv文件.当我尝试从数据框中打印特定列时,我得到了keyerror.因此,我正在与错误共享代码.

import pandas as pd

reviews_new = pd.read_csv("D:\\aviva.csv")

reviews_new['review']

**

reviews_new['review']

Traceback (most recent call last):

File "", line 1, in

reviews_new['review']

File "C:\Users\30216\AppData\Local\Continuum\Anaconda2\lib\site-packages\pandas\core\frame.py", line 1997, in __getitem__

return self._getitem_column(key)

File "C:\Users\30216\AppData\Local\Continuum\Anaconda2\lib\site-packages\pandas\core\frame.py", line 2004, in _getitem_column

return self._get_item_cache(key)

File "C:\Users\30216\AppData\Local\Continuum\Anaconda2\lib\site-packages\pandas\core\generic.py", line 1350, in _get_item_cache

values = self._data.get(item)

File "C:\Users\30216\AppData\Local\Continuum\Anaconda2\lib\site-packages\pandas\core\internals.py", line 3290, in get

loc = self.items.get_loc(item)

File "C:\Users\30216\AppData\Local\Continuum\Anaconda2\lib\site-packages\pandas\indexes\base.py", line 1947, in get_loc

return self._engine.get_loc(self._maybe_cast_indexer(key))

File "pandas\index.pyx", line 137, in pandas.index.IndexEngine.get_loc (pandas\index.c:4154)

File "pandas\index.pyx", line 159, in pandas.index.IndexEngine.get_loc (pandas\index.c:4018)

File "pandas\hashtable.pyx", line 675, in pandas.hashtable.PyObjectHashTable.get_item (pandas\hashtable.c:12368)

File "pandas\hashtable.pyx", line 683, in pandas.hashtable.PyObjectHashTable.get_item (pandas\hashtable.c:12322)

KeyError: 'review'

**

有人可以帮助我吗?

解决方法:

我认为可能有2个问题(显然):

1.列名称中的空格(也可能是数据)

解决方案是列名称中的strip个空格:

reviews_new.columns = reviews_new.columns.str.strip()

或者将参数skipinitialspace添加到read_csv:

reviews_new = pd.read_csv("D:\\aviva.csv", skipinitialspace=True)

2.默认分隔符不同,

解决方法是添加参数sep:

#sep is ;

reviews_new = pd.read_csv("D:\\aviva.csv", sep=';')

#sep is whitespace

reviews_new = pd.read_csv("D:\\aviva.csv", sep='\s+')

reviews_new = pd.read_csv("D:\\aviva.csv", delim_whitespace=True)

编辑:

你在列名中得到空格,所以需要1.solutions:

print (reviews_new.columns.tolist())

['Name', ' Date', ' review']

^ ^

标签:python,dataframe,pandas