(
self, target: Index, method: str_t, limit: int | None = None, tolerance=None
)
| 3902 | |
| 3903 | @final |
| 3904 | def _get_fill_indexer( |
| 3905 | self, target: Index, method: str_t, limit: int | None = None, tolerance=None |
| 3906 | ) -> npt.NDArray[np.intp]: |
| 3907 | if self._is_multi: |
| 3908 | if not (self.is_monotonic_increasing or self.is_monotonic_decreasing): |
| 3909 | raise ValueError("index must be monotonic increasing or decreasing") |
| 3910 | encoded = self.append(target)._engine.values # type: ignore[union-attr] |
| 3911 | self_encoded = Index(encoded[: len(self)], copy=False) |
| 3912 | target_encoded = Index(encoded[len(self) :], copy=False) |
| 3913 | return self_encoded._get_fill_indexer( |
| 3914 | target_encoded, method, limit, tolerance |
| 3915 | ) |
| 3916 | |
| 3917 | if self.is_monotonic_increasing and target.is_monotonic_increasing: |
| 3918 | target_values = target._get_engine_target() |
| 3919 | own_values = self._get_engine_target() |
| 3920 | if not isinstance(target_values, np.ndarray) or not isinstance( |
| 3921 | own_values, np.ndarray |
| 3922 | ): |
| 3923 | raise NotImplementedError |
| 3924 | |
| 3925 | if method == "pad": |
| 3926 | indexer = libalgos.pad(own_values, target_values, limit=limit) |
| 3927 | else: |
| 3928 | # i.e. "backfill" |
| 3929 | indexer = libalgos.backfill(own_values, target_values, limit=limit) |
| 3930 | else: |
| 3931 | indexer = self._get_fill_indexer_searchsorted(target, method, limit) |
| 3932 | if tolerance is not None and len(self): |
| 3933 | indexer = self._filter_indexer_tolerance(target, indexer, tolerance) |
| 3934 | return indexer |
| 3935 | |
| 3936 | @final |
| 3937 | def _get_fill_indexer_searchsorted( |
no test coverage detected