MCPcopy
hub / github.com/pandas-dev/pandas / _get_nearest_indexer

Method _get_nearest_indexer

pandas/core/indexes/base.py:3971–4000  ·  view source on GitHub ↗

Get the indexer for the nearest index labels; requires an index with values that can be subtracted from each other (e.g., not strings or tuples).

(
        self, target: Index, limit: int | None, tolerance
    )

Source from the content-addressed store, hash-verified

3969
3970 @final
3971 def _get_nearest_indexer(
3972 self, target: Index, limit: int | None, tolerance
3973 ) -> npt.NDArray[np.intp]:
3974 """
3975 Get the indexer for the nearest index labels; requires an index with
3976 values that can be subtracted from each other (e.g., not strings or
3977 tuples).
3978 """
3979 if not len(self):
3980 return self._get_fill_indexer(target, "pad")
3981
3982 left_indexer = self.get_indexer(target, "pad", limit=limit)
3983 right_indexer = self.get_indexer(target, "backfill", limit=limit)
3984
3985 left_distances = self._difference_compat(target, left_indexer)
3986 right_distances = self._difference_compat(target, right_indexer)
3987
3988 op = operator.lt if self.is_monotonic_increasing else operator.le
3989 indexer = np.where(
3990 # error: Argument 1&2 has incompatible type "Union[ExtensionArray,
3991 # ndarray[Any, Any]]"; expected "Union[SupportsDunderLE,
3992 # SupportsDunderGE, SupportsDunderGT, SupportsDunderLT]"
3993 op(left_distances, right_distances) # type: ignore[arg-type]
3994 | (right_indexer == -1),
3995 left_indexer,
3996 right_indexer,
3997 )
3998 if tolerance is not None:
3999 indexer = self._filter_indexer_tolerance(target, indexer, tolerance)
4000 return indexer
4001
4002 @final
4003 def _filter_indexer_tolerance(

Callers 1

_get_indexerMethod · 0.95

Calls 6

_get_fill_indexerMethod · 0.95
get_indexerMethod · 0.95
_difference_compatMethod · 0.95
opFunction · 0.85
whereMethod · 0.45

Tested by

no test coverage detected