PANDAS loc功能不起作用,出现错误

时间:2019-09-22 02:02:08

标签: pandas

我是Pandas的新手,我正在给此命令summer.loc["HAJOS, Alfred"]

我遇到这样的错误

    KeyError                                  Traceback (most recent call last)
~\Anaconda3\lib\site-packages\pandas\core\indexes\base.py in get_loc(self, key, method, tolerance)
   2656             try:
-> 2657                 return self._engine.get_loc(key)
   2658             except KeyError:

pandas/_libs/index.pyx in pandas._libs.index.IndexEngine.get_loc()

pandas/_libs/index.pyx in pandas._libs.index.IndexEngine.get_loc()

pandas/_libs/index_class_helper.pxi in pandas._libs.index.Int64Engine._check_type()

KeyError: 'HAJOS, Alfred'

During handling of the above exception, another exception occurred:

KeyError                                  Traceback (most recent call last)
<ipython-input-13-621dd74324af> in <module>
----> 1 summer.loc["HAJOS, Alfred"]

~\Anaconda3\lib\site-packages\pandas\core\indexing.py in __getitem__(self, key)
   1498 
   1499             maybe_callable = com.apply_if_callable(key, self.obj)
-> 1500             return self._getitem_axis(maybe_callable, axis=axis)
   1501 
   1502     def _is_scalar_access(self, key):

~\Anaconda3\lib\site-packages\pandas\core\indexing.py in _getitem_axis(self, key, axis)
   1911         # fall thru to straight lookup
   1912         self._validate_key(key, axis)
-> 1913         return self._get_label(key, axis=axis)
   1914 
   1915 

~\Anaconda3\lib\site-packages\pandas\core\indexing.py in _get_label(self, label, axis)
    139             raise IndexingError('no slices here, handle elsewhere')
    140 
--> 141         return self.obj._xs(label, axis=axis)
    142 
    143     def _get_loc(self, key, axis=None):

~\Anaconda3\lib\site-packages\pandas\core\generic.py in xs(self, key, axis, level, drop_level)
   3583                                                       drop_level=drop_level)
   3584         else:
-> 3585             loc = self.index.get_loc(key)
   3586 
   3587             if isinstance(loc, np.ndarray):

~\Anaconda3\lib\site-packages\pandas\core\indexes\base.py in get_loc(self, key, method, tolerance)
   2657                 return self._engine.get_loc(key)
   2658             except KeyError:
-> 2659                 return self._engine.get_loc(self._maybe_cast_indexer(key))
   2660         indexer = self.get_indexer([key], method=method, tolerance=tolerance)
   2661         if indexer.ndim > 1 or indexer.size > 1:

pandas/_libs/index.pyx in pandas._libs.index.IndexEngine.get_loc()

pandas/_libs/index.pyx in pandas._libs.index.IndexEngine.get_loc()

pandas/_libs/index_class_helper.pxi in pandas._libs.index.Int64Engine._check_type()

KeyError: 'HAJOS, Alfred'

    Year    City    Sport   Discipline  Athlete Country Gender  Event   Medal
0   1896    Athens  Aquatics    Swimming    HAJOS, Alfred   HUN Men 100M Freestyle  Gold
1   1896    Athens  Aquatics    Swimming    HERSCHMANN, Otto    AUT Men 100M Freestyle  Silver
2   1896    Athens  Aquatics    Swimming    DRIVAS, Dimitrios   GRE Men 100M Freestyle For Sailors  Bronze
3   1896    Athens  Aquatics    Swimming    MALOKINIS, Ioannis  GRE Men 100M Freestyle For Sailors  Gold
4   1896    Athens  Aquatics    Swimming    CHASAPIS, Spiridon  GRE Men 100M Freestyle For Sailors  Silver

1 个答案:

答案 0 :(得分:1)

尝试一下:

df.loc[df['Athlete'] == 'HAJOS, Alfred']

由于'HAJOS,Alfred'不在数据框索引中,因此可以使用布尔索引。

或使用query

df.query('Athlete == "HAJOS, Alfred"')