Closed
Description
Code Sample, a copy-pastable example if possible
adapted from test_non_matching
in pandas\tests\indexing\interval\test_interval.py
>>> import numpy as np
>>> import pandas as pd
>>> pd.__version__
'0.25.0rc0+59.g0437f6899'
>>>
>>> s=pd.Series(np.arange(5), pd.IntervalIndex.from_breaks(np.arange(6)))
>>> s
(0, 1] 0
(1, 2] 1
(2, 3] 2
(3, 4] 3
(4, 5] 4
dtype: int32
>>>
>>> s.loc[[4,5]]
(3, 4] 3
(4, 5] 4
dtype: int32
>>>
>>> s.loc[[4,5,6]]
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "C:\Users\simon\OneDrive\code\pandas-simonjayhawkins\pandas\core\indexing.py", line 1409, in __getitem__
return self._getitem_axis(maybe_callable, axis=axis)
File "C:\Users\simon\OneDrive\code\pandas-simonjayhawkins\pandas\core\indexing.py", line 1816, in _getitem_axis
return self._getitem_iterable(key, axis=axis)
File "C:\Users\simon\OneDrive\code\pandas-simonjayhawkins\pandas\core\indexing.py", line 1118, in _getitem_iterable
keyarr, indexer = self._get_listlike_indexer(key, axis, raise_missing=False)
File "C:\Users\simon\OneDrive\code\pandas-simonjayhawkins\pandas\core\indexing.py", line 1060, in _get_listlike_indexer
indexer, keyarr = ax._convert_listlike_indexer(key, kind=self.name)
File "C:\Users\simon\OneDrive\code\pandas-simonjayhawkins\pandas\core\indexes\base.py", line 3239, in _convert_listlike_indexer
indexer = self._convert_list_indexer(keyarr, kind=kind)
File "C:\Users\simon\OneDrive\code\pandas-simonjayhawkins\pandas\core\indexes\interval.py", line 626, in _convert_list_indexer
raise KeyError
KeyError
>>>
>>> s.to_frame().loc[[4,5,6]]
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "C:\Users\simon\OneDrive\code\pandas-simonjayhawkins\pandas\core\indexing.py", line 1409, in __getitem__
return self._getitem_axis(maybe_callable, axis=axis)
File "C:\Users\simon\OneDrive\code\pandas-simonjayhawkins\pandas\core\indexing.py", line 1816, in _getitem_axis
return self._getitem_iterable(key, axis=axis)
File "C:\Users\simon\OneDrive\code\pandas-simonjayhawkins\pandas\core\indexing.py", line 1118, in _getitem_iterable
keyarr, indexer = self._get_listlike_indexer(key, axis, raise_missing=False)
File "C:\Users\simon\OneDrive\code\pandas-simonjayhawkins\pandas\core\indexing.py", line 1060, in _get_listlike_indexer
indexer, keyarr = ax._convert_listlike_indexer(key, kind=self.name)
File "C:\Users\simon\OneDrive\code\pandas-simonjayhawkins\pandas\core\indexes\base.py", line 3239, in _convert_listlike_indexer
indexer = self._convert_list_indexer(keyarr, kind=kind)
File "C:\Users\simon\OneDrive\code\pandas-simonjayhawkins\pandas\core\indexes\interval.py", line 626, in _convert_list_indexer
raise KeyError
KeyError
>>>
Problem description
With a list indexer, the missing key should be in the exception message
Expected Output
KeyError: 6
another example - from test_loc_with_overlap
in pandas\tests\indexing\interval\test_interval_new.py
>>> idx = pd.IntervalIndex.from_tuples([(1, 5), (3, 7)])
>>> s = pd.Series(range(len(idx)), index=idx)
>>> s
(1, 5] 0
(3, 7] 1
dtype: int64
>>>
>>> s.loc[pd.Interval(3, 5)]
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "C:\Users\simon\OneDrive\code\pandas-simonjayhawkins\pandas\core\indexing.py", line 1409, in __getitem__
return self._getitem_axis(maybe_callable, axis=axis)
File "C:\Users\simon\OneDrive\code\pandas-simonjayhawkins\pandas\core\indexing.py", line 1827, in _getitem_axis
return self._get_label(key, axis=axis)
File "C:\Users\simon\OneDrive\code\pandas-simonjayhawkins\pandas\core\indexing.py", line 152, in _get_label
return self.obj._xs(label, axis=axis)
File "C:\Users\simon\OneDrive\code\pandas-simonjayhawkins\pandas\core\generic.py", line 3738, in xs
loc = self.index.get_loc(key)
File "C:\Users\simon\OneDrive\code\pandas-simonjayhawkins\pandas\core\indexes\interval.py", line 875, in get_loc
raise KeyError(key)
KeyError: Interval(3, 5, closed='right')
>>>
>>> s.loc[[pd.Interval(3, 5)]]
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "C:\Users\simon\OneDrive\code\pandas-simonjayhawkins\pandas\core\indexing.py", line 1409, in __getitem__
return self._getitem_axis(maybe_callable, axis=axis)
File "C:\Users\simon\OneDrive\code\pandas-simonjayhawkins\pandas\core\indexing.py", line 1816, in _getitem_axis
return self._getitem_iterable(key, axis=axis)
File "C:\Users\simon\OneDrive\code\pandas-simonjayhawkins\pandas\core\indexing.py", line 1118, in _getitem_iterable
keyarr, indexer = self._get_listlike_indexer(key, axis, raise_missing=False)
File "C:\Users\simon\OneDrive\code\pandas-simonjayhawkins\pandas\core\indexing.py", line 1060, in _get_listlike_indexer
indexer, keyarr = ax._convert_listlike_indexer(key, kind=self.name)
File "C:\Users\simon\OneDrive\code\pandas-simonjayhawkins\pandas\core\indexes\base.py", line 3239, in _convert_listlike_indexer
indexer = self._convert_list_indexer(keyarr, kind=kind)
File "C:\Users\simon\OneDrive\code\pandas-simonjayhawkins\pandas\core\indexes\interval.py", line 626, in _convert_list_indexer
raise KeyError
KeyError
>>>
Output of pd.show_versions()
[paste the output of pd.show_versions()
here below this line]