错误:pandas hashtable keyerror
- 2024-12-24 08:56:00
- admin 原创
- 105
问题描述:
我已成功使用 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Â16AppDataLocalContinuumAnaconda2libsite-packagespandascorerame.py", line 1997, in __getitem__
return self._getitem_column(key)
File "C:UsersÂ16AppDataLocalContinuumAnaconda2libsite-packagespandascorerame.py", line 2004, in _getitem_column
return self._get_item_cache(key)
File "C:UsersÂ16AppDataLocalContinuumAnaconda2libsite-packagespandascoregeneric.py", line 1350, in _get_item_cache
values = self._data.get(item)
File "C:UsersÂ16AppDataLocalContinuumAnaconda2libsite-packagespandascoreinternals.py", line 3290, in get
loc = self.items.get_loc(item)
File "C:UsersÂ16AppDataLocalContinuumAnaconda2libsite-packagespandasindexesase.py", line 1947, in get_loc
return self._engine.get_loc(self._maybe_cast_indexer(key))
File "pandasindex.pyx", line 137, in pandas.index.IndexEngine.get_loc (pandasindex.c:4154)
File "pandasindex.pyx", line 159, in pandas.index.IndexEngine.get_loc (pandasindex.c:4018)
File "pandashashtable.pyx", line 675, in pandas.hashtable.PyObjectHashTable.get_item (pandashashtable.c:12368)
File "pandashashtable.pyx", line 683, in pandas.hashtable.PyObjectHashTable.get_item (pandashashtable.c:12322)
KeyError: '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']
^ ^
编辑1:
如果没有列名,如果测试print (df.columns.tolist())
并且失败,则选择 DataFrame 的第一个“列”解决方案是选择df.index
:
df = pd.DataFrame({'col':list('abc'),
'col1':list('efg'),
'col2':range(3)}).set_index('col1')
print (df)
col col2
col1
e a 0
f b 1
g c 2
print (df.columns.tolist())
['col', 'col2']
print (df.index)
Index(['e', 'f', 'g'], dtype='object', name='col1')
print (df.index.get_level_values('col1'))
Index(['e', 'f', 'g'], dtype='object', name='col1')
如果有 MultiIndex:
df = pd.DataFrame({'col':list('abc'),
'col1':list('efg'),
'col2':range(3)}).set_index(['col1', 'col'])
print (df)
col2
col1 col
e a 0
f b 1
g c 2
print (df.index)
MultiIndex([('e', 'a'),
('f', 'b'),
('g', 'c')],
names=['col1', 'col'])
print (df.index.get_level_values('col1'))
Index(['e', 'f', 'g'], dtype='object', name='col1')
解决方案 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'])
相关推荐
热门文章
项目管理软件有哪些?
- 2024年20款好用的项目管理软件推荐,项目管理提效的20个工具和技巧
- 2024年开源项目管理软件有哪些?推荐5款好用的项目管理工具
- 2024年常用的项目管理软件有哪些?推荐这10款国内外好用的项目管理工具
- 项目管理软件有哪些?推荐7款超好用的项目管理工具
- 项目管理软件有哪些最好用?推荐6款好用的项目管理工具
- 项目管理软件哪个最好用?盘点推荐5款好用的项目管理工具
- 项目管理软件排行榜:2024年项目经理必备5款开源项目管理软件汇总
- 项目管理软件有哪些,盘点推荐国内外超好用的7款项目管理工具
- 项目管理必备:盘点2024年13款好用的项目管理软件
- 2024项目管理软件排行榜(10类常用的项目管理工具全推荐)
热门标签
云禅道AD