错误:pandas hashtable keyerror

Posted

技术标签:

【中文标题】错误:pandas hashtable keyerror【英文标题】:Error: pandas hashtable keyerror 【发布时间】:2021-03-07 00:30:55 【问题描述】:

我已经使用 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 "<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'

**

有人可以帮我吗?

【问题讨论】:

print (reviews_new.columns.tolist()) 是什么? 原始的 csv 实际上是什么样子的? print(reviews_new.columns.tolist()) 显示什么?您的列名中可能有空格 请分享reviews_new.info()的输出 如果 csv 中不存在列名,您必须提供它们。请粘贴reviews_new.columns 的输出 @jezrael & edchum : print (reviews_new.columns.tolist()) ['Name', 'Date', 'review'] 【参考方案1】:

我认为首先最好调查一下,什么是真正的列名,如果更好地转换为列表,则会看到一些空格或类似内容:

print (reviews_new.columns.tolist())

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

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'] 
          ^        ^

【讨论】:

【参考方案2】:
import pandas as pd
df=pd.read_csv("file.txt", skipinitialspace=True)
df.head()
df['review']

【讨论】:

【参考方案3】:
dfObj['Hash Key'] = (dfObj['DEAL_ID'].map(str) +dfObj['COST_CODE'].map(str) +dfObj['TRADE_ID'].map(str)).apply(hash)

#for index, row in dfObj.iterrows():
#        dfObj.loc[`enter code here`index,'hash'] = hashlib.md5(str(row[['COST_CODE','TRADE_ID']].values)).hexdigest()

print(dfObj['hash'])

【讨论】:

以上是关于错误:pandas hashtable keyerror的主要内容,如果未能解决你的问题,请参考以下文章

在 Mac OS X 上安装 Pandas:ImportError (cannot import name hashtable)

python3中的pandas删除部分数据,报错“Int64HashTable.get_item”

python3中的pandas删除部分数据,报错“Int64HashTable.get_item”

AE抠像-绿幕抠像技术-Primatte Keyer 视频教程 https://www.cgaee.com

AE抠像-绿幕抠像技术-Primatte Keyer 视频教程 https://www.cgaee.com

错误和异常