2017-05-02 114 views
1

我已經使用熊貓成功讀取了一個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 "<ipython-input-43-ed485b439a1c>", line 1, in <module> 
    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' 

**

有人可以幫助我在這?

+0

什麼是'print(reviews_new.columns.tolist())'? – jezrael

+0

原來的csv究竟是什麼樣的? 'print(reviews_new.columns.tolist())'顯示什麼?你可能在你的姓名中有空格 – EdChum

+0

請分享'reviews_new.info()'的輸出 – ayhan

回答

1

我覺得可以有2個問題(顯然):列名

1.whitespaces(也許在數據也)

解決方案是strip空格中列名:

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

或添加參數skipinitialspaceread_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'] 
     ^ ^
+0

嗨,第一個解決方案爲我工作。謝謝 –