diff --git a/pandas/core/indexes/base.py b/pandas/core/indexes/base.py index 6a7551391f2a8..1d8c08c323cd4 100644 --- a/pandas/core/indexes/base.py +++ b/pandas/core/indexes/base.py @@ -68,7 +68,7 @@ from pandas.core.arrays import ExtensionArray from pandas.core.base import IndexOpsMixin, PandasObject import pandas.core.common as com -from pandas.core.indexers import deprecate_ndim_indexing, maybe_convert_indices +from pandas.core.indexers import deprecate_ndim_indexing from pandas.core.indexes.frozen import FrozenList import pandas.core.missing as missing from pandas.core.ops import get_op_result_name @@ -3211,7 +3211,7 @@ def is_int(v): return indexer - def _convert_listlike_indexer(self, keyarr, kind=None): + def _convert_listlike_indexer(self, keyarr): """ Parameters ---------- @@ -3230,7 +3230,7 @@ def _convert_listlike_indexer(self, keyarr, kind=None): else: keyarr = self._convert_arr_indexer(keyarr) - indexer = self._convert_list_indexer(keyarr, kind=kind) + indexer = self._convert_list_indexer(keyarr) return indexer, keyarr def _convert_arr_indexer(self, keyarr): @@ -3264,7 +3264,7 @@ def _convert_index_indexer(self, keyarr): """ return keyarr - def _convert_list_indexer(self, keyarr, kind=None): + def _convert_list_indexer(self, keyarr): """ Convert a list-like indexer to the appropriate dtype. @@ -3278,29 +3278,6 @@ def _convert_list_indexer(self, keyarr, kind=None): ------- positional indexer or None """ - if ( - kind in [None, "iloc"] - and is_integer_dtype(keyarr) - and not self.is_floating() - ): - - if self.inferred_type == "mixed-integer": - indexer = self.get_indexer(keyarr) - if (indexer >= 0).all(): - return indexer - # missing values are flagged as -1 by get_indexer and negative - # indices are already converted to positive indices in the - # above if-statement, so the negative flags are changed to - # values outside the range of indices so as to trigger an - # IndexError in maybe_convert_indices - indexer[indexer < 0] = len(self) - - return maybe_convert_indices(indexer, len(self)) - - elif not self.inferred_type == "integer": - keyarr = np.where(keyarr < 0, len(self) + keyarr, keyarr) - return keyarr - return None def _invalid_indexer(self, form: str_t, key): diff --git a/pandas/core/indexes/category.py b/pandas/core/indexes/category.py index 2cdf47ad61cec..8df4a447e1f44 100644 --- a/pandas/core/indexes/category.py +++ b/pandas/core/indexes/category.py @@ -678,12 +678,12 @@ def _convert_scalar_indexer(self, key, kind=None): return super()._convert_scalar_indexer(key, kind=kind) @Appender(Index._convert_list_indexer.__doc__) - def _convert_list_indexer(self, keyarr, kind=None): + def _convert_list_indexer(self, keyarr): # Return our indexer or raise if all of the values are not included in # the categories if self.categories._defer_to_indexing: - indexer = self.categories._convert_list_indexer(keyarr, kind=kind) + indexer = self.categories._convert_list_indexer(keyarr) return Index(self.codes).get_indexer_for(indexer) indexer = self.categories.get_indexer(np.asarray(keyarr)) diff --git a/pandas/core/indexes/interval.py b/pandas/core/indexes/interval.py index a665e4df00219..0252a13665b84 100644 --- a/pandas/core/indexes/interval.py +++ b/pandas/core/indexes/interval.py @@ -537,7 +537,7 @@ def _maybe_cast_slice_bound(self, label, side, kind): return getattr(self, side)._maybe_cast_slice_bound(label, side, kind) @Appender(Index._convert_list_indexer.__doc__) - def _convert_list_indexer(self, keyarr, kind=None): + def _convert_list_indexer(self, keyarr): """ we are passed a list-like indexer. Return the indexer for matching intervals. diff --git a/pandas/core/indexes/multi.py b/pandas/core/indexes/multi.py index c560d81ba95f6..95511858b0cd9 100644 --- a/pandas/core/indexes/multi.py +++ b/pandas/core/indexes/multi.py @@ -2375,7 +2375,7 @@ def _try_mi(k): raise InvalidIndexError(key) - def _convert_listlike_indexer(self, keyarr, kind=None): + def _convert_listlike_indexer(self, keyarr): """ Parameters ---------- @@ -2388,7 +2388,7 @@ def _convert_listlike_indexer(self, keyarr, kind=None): indexer is an ndarray or None if cannot convert keyarr are tuple-safe keys """ - indexer, keyarr = super()._convert_listlike_indexer(keyarr, kind=kind) + indexer, keyarr = super()._convert_listlike_indexer(keyarr) # are we indexing a specific level if indexer is None and len(keyarr) and not isinstance(keyarr[0], tuple): diff --git a/pandas/core/indexing.py b/pandas/core/indexing.py index 77003719360d9..1aa3e1dbd4499 100755 --- a/pandas/core/indexing.py +++ b/pandas/core/indexing.py @@ -1459,7 +1459,8 @@ def _get_listlike_indexer(self, key, axis: int, raise_missing: bool = False): # Have the index compute an indexer or return None # if it cannot handle: - indexer, keyarr = ax._convert_listlike_indexer(key, kind=self.name) + assert self.name == "loc" + indexer, keyarr = ax._convert_listlike_indexer(key) # We only act on all found values: if indexer is not None and (indexer != -1).all(): self._validate_read_indexer(key, indexer, axis, raise_missing=raise_missing)