如何处理KeyError:“['blah']不在索引中”

2024-05-12 23:38:12 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在查看US names dataset(SSA),正如Wes McKinney在Python中为数据分析所描述的那样。

这个有效:

total_births = top1000.pivot_table('births', index = 'year', columns = 'name', aggfunc = sum)
subset = total_births[['Michael', 'Mike', 'Martin']].fillna(0)
subset.plot( title = 'Number of births per year', grid = True, figsize=(28,20), xticks=range(1880, 2020, 5)).get_figure().savefig('output2.png', bbox_inches = 'tight')

但是,当我添加一个不受欢迎的名称时,它仍然在数据集中:

subset = total_births[['Michael', 'Mike', 'Martin', 'Ammar']].fillna(0)

…我得到以下错误:

Traceback (most recent call last):
  File "names.py", line 44, in <module>
    subset = total_births[['Michael', 'Mike', 'Martin', 'Ammar']].fillna(0)
  File "/home/mike/anaconda/lib/python2.7/site-packages/pandas/core/frame.py", line 1774, in __getitem__
    return self._getitem_array(key)
  File "/home/mike/anaconda/lib/python2.7/site-packages/pandas/core/frame.py", line 1818, in _getitem_array
    indexer = self.ix._convert_to_indexer(key, axis=1)
  File "/home/mike/anaconda/lib/python2.7/site-packages/pandas/core/indexing.py", line 1143, in _convert_to_indexer
    raise KeyError('%s not in index' % objarr[mask])
KeyError: "['Ammar'] not in index"

我试着添加fillna(0),但是没有帮助。。。此代码可在https://github.com/m1key/data-science-sandbox(ade55154f177410e1e269d64766a4e8b8e1ae585)上找到,有问题的行将被注释掉。

样本数据集:

name  Aaden  Aaliyah  Aanya  Aarav  Aaron  Aarush  Ab  Abagail  Abb  Abbey  \
year                                                                         
1880    NaN      NaN    NaN    NaN    102     NaN NaN      NaN  NaN    NaN   
1881    NaN      NaN    NaN    NaN     94     NaN NaN      NaN  NaN    NaN   
1882    NaN      NaN    NaN    NaN     85     NaN NaN      NaN  NaN    NaN   
1883    NaN      NaN    NaN    NaN    105     NaN NaN      NaN  NaN    NaN   
1884    NaN      NaN    NaN    NaN     97     NaN NaN      NaN  NaN    NaN   

name  ...   Zoa  Zoe  Zoey  Zoie  Zola  Zollie  Zona  Zora  Zula  Zuri  
year  ...                                                               
1880  ...     8   23   NaN   NaN     7     NaN     8    28    27   NaN  
1881  ...   NaN   22   NaN   NaN    10     NaN     9    21    27   NaN  
1882  ...     8   25   NaN   NaN     9     NaN    17    32    21   NaN  
1883  ...   NaN   23   NaN   NaN    10     NaN    11    35    25   NaN  
1884  ...    13   31   NaN   NaN    14       6     8    58    27   NaN  

谢谢你的提示。


Tags: nameinpyindexlinenanyearfile