Skip to content

Commit 1d19ed7

Browse files
authored
REF: De-duplicate MultiIndex._get_indexer (#41976)
1 parent bf5703a commit 1d19ed7

File tree

2 files changed

+8
-10
lines changed

2 files changed

+8
-10
lines changed

pandas/core/indexes/base.py

+7
Original file line numberDiff line numberDiff line change
@@ -3497,6 +3497,13 @@ def _get_fill_indexer(
34973497
self, target: Index, method: str_t, limit: int | None = None, tolerance=None
34983498
) -> np.ndarray:
34993499

3500+
if self._is_multi:
3501+
# TODO: get_indexer_with_fill docstring says values must be _sorted_
3502+
# but that doesn't appear to be enforced
3503+
return self._engine.get_indexer_with_fill(
3504+
target=target._values, values=self._values, method=method, limit=limit
3505+
)
3506+
35003507
target_values = target._get_engine_target()
35013508

35023509
if self.is_monotonic_increasing and target.is_monotonic_increasing:

pandas/core/indexes/multi.py

+1-10
Original file line numberDiff line numberDiff line change
@@ -2672,18 +2672,9 @@ def _get_indexer(
26722672
# TODO: explicitly raise here? we only have one test that
26732673
# gets here, and it is checking that we raise with method="nearest"
26742674

2675-
if method == "pad" or method == "backfill":
2676-
# TODO: get_indexer_with_fill docstring says values must be _sorted_
2677-
# but that doesn't appear to be enforced
2678-
indexer = self._engine.get_indexer_with_fill(
2679-
target=target._values, values=self._values, method=method, limit=limit
2680-
)
2681-
else:
2682-
indexer = self._engine.get_indexer(target._values)
2683-
26842675
# Note: we only get here (in extant tests at least) with
26852676
# target.nlevels == self.nlevels
2686-
return ensure_platform_int(indexer)
2677+
return super()._get_indexer(target, method, limit, tolerance)
26872678

26882679
def get_slice_bound(
26892680
self, label: Hashable | Sequence[Hashable], side: str, kind: str | None = None

0 commit comments

Comments
 (0)