Python pandas pandas.hashtable.PyObjectHashTable.get_item 中的 groupby 键错误
Python pandas groupby key error in pandas.hashtable.PyObjectHashTable.get_item
我正在做的似乎是 Pandas 中的简单分组。该列是一个字符串列,没有 NaN 或奇怪的字符串。但是,我不断收到以下错误。有谁知道为什么会发生这种情况?我感觉可能跟我的数据有关系,不过好像没问题...
我是运行by_user = df.groupby('User')
和堆栈跟踪:
by_user = df.groupby('User')
File "c:\Anaconda\lib\site-packages\pandas\core\generic.py", line 2773, in groupby
sort=sort, group_keys=group_keys, squeeze=squeeze)
File "c:\Anaconda\lib\site-packages\pandas\core\groupby.py", line 1142, in groupby
return klass(obj, by, **kwds)
File "c:\Anaconda\lib\site-packages\pandas\core\groupby.py", line 388, in __init__ level=level, sort=sort)
File "c:\Anaconda\lib\site-packages\pandas\core\groupby.py", line 2041, in _get_grouper
gpr = obj[gpr]
File "c:\Anaconda\lib\site-packages\pandas\core\frame.py", line 1678, in __getitem__
return self._getitem_column(key)
File "c:\Anaconda\lib\site-packages\pandas\core\frame.py", line 1685, in _get item_column
return self._get_item_cache(key)
File "c:\Anaconda\lib\site-packages\pandas\core\generic.py", line 1052, in _ge
t_item_cache
values = self._data.get(item)
File "c:\Anaconda\lib\site-packages\pandas\core\internals.py", line 2565, in get
loc = self.items.get_loc(item)
File "c:\Anaconda\lib\site-packages\pandas\core\index.py", line 1181, in get_loc
return self._engine.get_loc(_values_from_object(key))
File "index.pyx", line 129, in pandas.index.IndexEngine.get_loc (pandas\index.
c:3656)
File "index.pyx", line 149, in pandas.index.IndexEngine.get_loc (pandas\index.
c:3534)
File "hashtable.pyx", line 696, in pandas.hashtable.PyObjectHashTable.get_item
(pandas\hashtable.c:11911)
File "hashtable.pyx", line 704, in pandas.hashtable.PyObjectHashTable.get_item
(pandas\hashtable.c:11864)
KeyError: 'User'
df.info():
User Code 175167 non-null object
Version 175167 non-null object
Date Accessed 175167 non-null datetime64[ns]
Series 175167 non-null object
Software 175167 non-null object
User 175167 non-null object
[从评论中移出]
很容易漏掉列名中尾随的白色space,但您可以手动检查df.columns
:
>>> df = pd.DataFrame({"User": [1,2]})
>>> df2 = pd.DataFrame({"User ": [1,2]})
>>> df
User
0 1
1 2
>>> df2
User
0 1
1 2
>>> df.columns
Index([u'User'], dtype='object')
>>> df2.columns
Index([u'User '], dtype='object')
(稍微揭开帷幕,我怀疑可能会发生这样的事情,因为当我模拟自己的 DataFrame 并查看 df.info()
时,我没有看到那么多 space 在列名和数字之间,正如您的输出似乎显示的那样。)
我正在做的似乎是 Pandas 中的简单分组。该列是一个字符串列,没有 NaN 或奇怪的字符串。但是,我不断收到以下错误。有谁知道为什么会发生这种情况?我感觉可能跟我的数据有关系,不过好像没问题...
我是运行by_user = df.groupby('User')
和堆栈跟踪:
by_user = df.groupby('User')
File "c:\Anaconda\lib\site-packages\pandas\core\generic.py", line 2773, in groupby
sort=sort, group_keys=group_keys, squeeze=squeeze)
File "c:\Anaconda\lib\site-packages\pandas\core\groupby.py", line 1142, in groupby
return klass(obj, by, **kwds)
File "c:\Anaconda\lib\site-packages\pandas\core\groupby.py", line 388, in __init__ level=level, sort=sort)
File "c:\Anaconda\lib\site-packages\pandas\core\groupby.py", line 2041, in _get_grouper
gpr = obj[gpr]
File "c:\Anaconda\lib\site-packages\pandas\core\frame.py", line 1678, in __getitem__
return self._getitem_column(key)
File "c:\Anaconda\lib\site-packages\pandas\core\frame.py", line 1685, in _get item_column
return self._get_item_cache(key)
File "c:\Anaconda\lib\site-packages\pandas\core\generic.py", line 1052, in _ge
t_item_cache
values = self._data.get(item)
File "c:\Anaconda\lib\site-packages\pandas\core\internals.py", line 2565, in get
loc = self.items.get_loc(item)
File "c:\Anaconda\lib\site-packages\pandas\core\index.py", line 1181, in get_loc
return self._engine.get_loc(_values_from_object(key))
File "index.pyx", line 129, in pandas.index.IndexEngine.get_loc (pandas\index.
c:3656)
File "index.pyx", line 149, in pandas.index.IndexEngine.get_loc (pandas\index.
c:3534)
File "hashtable.pyx", line 696, in pandas.hashtable.PyObjectHashTable.get_item
(pandas\hashtable.c:11911)
File "hashtable.pyx", line 704, in pandas.hashtable.PyObjectHashTable.get_item
(pandas\hashtable.c:11864)
KeyError: 'User'
df.info():
User Code 175167 non-null object
Version 175167 non-null object
Date Accessed 175167 non-null datetime64[ns]
Series 175167 non-null object
Software 175167 non-null object
User 175167 non-null object
[从评论中移出]
很容易漏掉列名中尾随的白色space,但您可以手动检查df.columns
:
>>> df = pd.DataFrame({"User": [1,2]})
>>> df2 = pd.DataFrame({"User ": [1,2]})
>>> df
User
0 1
1 2
>>> df2
User
0 1
1 2
>>> df.columns
Index([u'User'], dtype='object')
>>> df2.columns
Index([u'User '], dtype='object')
(稍微揭开帷幕,我怀疑可能会发生这样的事情,因为当我模拟自己的 DataFrame 并查看 df.info()
时,我没有看到那么多 space 在列名和数字之间,正如您的输出似乎显示的那样。)