pandas 接收`KeyError: u'no item named XYZ'` 错误
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/20854072/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
Receiving `KeyError: u'no item named XYZ'` error
提问by Mona Jalal
Here's the error I receive after running it I have this problem:
这是我运行后收到的错误我有这个问题:
Traceback (most recent call last):
File "t1.py", line 255, in <module>
pivot_rating = ratings.pivot(index='User-ID', columns='ISBN', values='Book-Rating')
File "/Library/Python/2.7/site-packages/pandas/core/frame.py", line 4182, in pivot
return pivot(self, index=index, columns=columns, values=values)
File "/Library/Python/2.7/site-packages/pandas/core/reshape.py", line 343, in pivot
indexed = Series(self[values].values,
File "/Library/Python/2.7/site-packages/pandas/core/frame.py", line 2003, in __getitem__
return self._get_item_cache(key)
File "/Library/Python/2.7/site-packages/pandas/core/generic.py", line 667, in _get_item_cache
values = self._data.get(item)
File "/Library/Python/2.7/site-packages/pandas/core/internals.py", line 1655, in get
_, block = self._find_block(item)
File "/Library/Python/2.7/site-packages/pandas/core/internals.py", line 1935, in _find_block
self._check_have(item)
File "/Library/Python/2.7/site-packages/pandas/core/internals.py", line 1942, in _check_have
raise KeyError('no item named %s' % com.pprint_thing(item))
KeyError: u'no item named Book-Rating'
Line 255 is pivot_rating = ratings.pivot(index='User-ID', columns='ISBN', values='Book-Rating')
After running the following code:
运行以下代码后:
ratings = pd.read_csv('/Users/mona/Downloads/BX-Dump/BX-Book-Ratings.csv', sep=";", quotechar="\"", escapechar="\")
print ratings
# <class 'pandas.core.frame.DataFrame'>
# Int64Index: 1149779 entries, 0 to 1149778
# Data columns (total 3 columns):
# 276725 1149779 non-null values
# 034545104X 1149779 non-null values
# 0 1149779 non-null values
pivot_rating = ratings.pivot(index='User-ID', columns='ISBN', values='Book-Rating')
However the file BX-Book-Ratings.csvhas three columns and the third column is rating and each row is like this "276725";"034545104X";"0". Any idea what's wrong?
但是该文件BX-Book-Ratings.csv有三列,第三列是评级,每一行都是这样的"276725";"034545104X";"0"。知道出了什么问题吗?
回答by alko
Your ratingsDataFrame has no column named 'Book-Rating':
您的ratingsDataFrame 没有名为 的列'Book-Rating':
>>> ratings = pd.DataFrame([[276725,"034545104X",0]],
... columns=['User-ID', 'ISBN', 'Book-Rating'])
>>> ratings.pivot(index='User-ID', columns='ISBN', values='Book-Rating')
ISBN 034545104X
User-ID
276725 0
Compare with:
与之比较:
>>> ratings.columns = ['User-ID', 'ISBN', 'BookRating']
>>> ratings.pivot(index='User-ID', columns='ISBN', values='Book-Rating')
Traceback (most recent call last):
...
KeyError: u'no item named Book-Rating'
Update:
更新:
Solution in your case is to specify columns in code that loads data using namesparamether. Try replace
您的情况的解决方案是在使用参数加载数据的代码中指定列names。尝试更换
pd.read_csv('/Users/mona/Downloads/BX-Dump/BX-Book-Ratings.csv',
sep=";", quotechar="\"", escapechar="\")
with
和
pd.read_csv('/Users/mona/Downloads/BX-Dump/BX-Book-Ratings.csv',
header=None, names=['User-ID', 'ISBN', 'Book-Rating'],
sep=";", quotechar="\"", escapechar="\")

