如何处理KeyError:" [' blah']不在索引"

时间:2015-07-16 09:42:18

标签: python pandas

我正在查看美国名称数据集(SSA),如Wes McKinney的Python for Data Analysis所述。

有效

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  

感谢任何提示。

1 个答案:

答案 0 :(得分:2)

Ammar似乎没有出现在您的数据集中。

要仔细检查,请尝试'Ammar' in total_births.columns,它会返回布尔值(TrueFalse