Skip to content

Commit b48aaae

Browse files
jbrockmendeliynehz
authored andcommitted
REF: De-duplicate MultiIndex._get_indexer (pandas-dev#41976)
1 parent 243db41 commit b48aaae

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
@@ -3519,6 +3519,13 @@ def _get_fill_indexer(
35193519
self, target: Index, method: str_t, limit: int | None = None, tolerance=None
35203520
) -> np.ndarray:
35213521

3522+
if self._is_multi:
3523+
# TODO: get_indexer_with_fill docstring says values must be _sorted_
3524+
# but that doesn't appear to be enforced
3525+
return self._engine.get_indexer_with_fill(
3526+
target=target._values, values=self._values, method=method, limit=limit
3527+
)
3528+
35223529
target_values = target._get_engine_target()
35233530

35243531
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)