簡體   English   中英

為什么我在已知觀察中使用 .loc 收到關鍵錯誤

[英]Why am I receiving a key error using .loc on a known observation

嘗試按索引提取一行數據時出現關鍵錯誤。 我根據查看.head()命令來選擇索引,所以我知道值在那里。 我的索引基於策略 ID。

我看過一些類似以下的帖子,但他們沒有回答問題: Python Pandas dataframe using.loc 中的 KeyError

這是數據框的屏幕截圖: 在此處輸入圖像描述

然后我嘗試:

df_test.loc[92026963:]

這給了我一個關鍵錯誤。 然后我嘗試了:

df_test.loc[92026963]

這給了我同樣的錯誤。 我什至嘗試將策略 ID 放在引號中。 完整回溯如下:

ValueError Traceback(最近一次調用最后一次)C:\ProgramData\Anaconda3\lib\site-packages\pandas\core\indexes\base.py in get_slice_bound(self, label, side, kind) 4804 嘗試:-> 返回。 _searchsorted_monotonic(label, side) 4806 除了ValueError:

C:\ProgramData\Anaconda3\lib\site-packages\pandas\core\indexes\base.py in _searchsorted_monotonic(self, label, side) 4764 -> 4765 raise ValueError('index must be be')

ValueError:索引必須單調遞增或遞減

在處理上述異常的過程中,又出現了一個異常:

KeyError                                  Traceback (most recent call last)
<ipython-input-45-85aa3a940778> in <module>
----> 1 df_test.loc[92026963:]

C:\ProgramData\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):

C:\ProgramData\Anaconda3\lib\site-packages\pandas\core\indexing.py in _getitem_axis(self, key, axis)
   1865         if isinstance(key, slice):
   1866             self._validate_key(key, axis)
-> 1867             return self._get_slice_axis(key, axis=axis)
   1868         elif com.is_bool_indexer(key):
   1869             return self._getbool_axis(key, axis=axis)

C:\ProgramData\Anaconda3\lib\site-packages\pandas\core\indexing.py in _get_slice_axis(self, slice_obj, axis)
   1531         labels = obj._get_axis(axis)
   1532         indexer = labels.slice_indexer(slice_obj.start, slice_obj.stop,
-> 1533                                        slice_obj.step, kind=self.name)
   1534 
   1535         if isinstance(indexer, slice):

C:\ProgramData\Anaconda3\lib\site-packages\pandas\core\indexes\base.py in slice_indexer(self, start, end, step, kind)
   4671         """
   4672         start_slice, end_slice = self.slice_locs(start, end, step=step,
-> 4673                                                  kind=kind)
   4674 
   4675         # return a slice

C:\ProgramData\Anaconda3\lib\site-packages\pandas\core\indexes\base.py in slice_locs(self, start, end, step, kind)
   4870         start_slice = None
   4871         if start is not None:
-> 4872             start_slice = self.get_slice_bound(start, 'left', kind)
   4873         if start_slice is None:
   4874             start_slice = 0

C:\ProgramData\Anaconda3\lib\site-packages\pandas\core\indexes\base.py in get_slice_bound(self, label, side, kind)
   4806             except ValueError:
   4807                 # raise the original KeyError
-> 4808                 raise err
   4809 
   4810         if isinstance(slc, np.ndarray):

C:\ProgramData\Anaconda3\lib\site-packages\pandas\core\indexes\base.py in get_slice_bound(self, label, side, kind)
   4800         # we need to look up the label
   4801         try:
-> 4802             slc = self._get_loc_only_exact_matches(label)
   4803         except KeyError as err:
   4804             try:

C:\ProgramData\Anaconda3\lib\site-packages\pandas\core\indexes\base.py in _get_loc_only_exact_matches(self, key)
   4770         get_slice_bound.
   4771         """
-> 4772         return self.get_loc(key)
   4773 
   4774     def get_slice_bound(self, label, side, kind):

C:\ProgramData\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/hashtable_class_helper.pxi in pandas._libs.hashtable.Int64HashTable.get_item()

pandas/_libs/hashtable_class_helper.pxi in pandas._libs.hashtable.Int64HashTable.get_item()

KeyError: 92026963

看來這里有必要分配回DataFrame.set_index

df_test = df_test.set_index('policy')

或使用inplace=True

df_test.set_index('policy', inplace=True)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM