Adapted from pandas.Index._get_nearest_indexer
(self, target, limit, tolerance)
| 383 | return loc |
| 384 | |
| 385 | def _get_nearest_indexer(self, target, limit, tolerance): |
| 386 | """Adapted from pandas.Index._get_nearest_indexer""" |
| 387 | left_indexer = self.get_indexer(target, "pad", limit=limit) |
| 388 | right_indexer = self.get_indexer(target, "backfill", limit=limit) |
| 389 | left_distances = abs(self.values[left_indexer] - target.values) |
| 390 | right_distances = abs(self.values[right_indexer] - target.values) |
| 391 | |
| 392 | if self.is_monotonic_increasing: |
| 393 | condition = (left_distances < right_distances) | (right_indexer == -1) |
| 394 | else: |
| 395 | condition = (left_distances <= right_distances) | (right_indexer == -1) |
| 396 | indexer = np.where(condition, left_indexer, right_indexer) |
| 397 | |
| 398 | if tolerance is not None: |
| 399 | indexer = self._filter_indexer_tolerance(target, indexer, tolerance) |
| 400 | return indexer |
| 401 | |
| 402 | def _filter_indexer_tolerance(self, target, indexer, tolerance): |
| 403 | """Adapted from pandas.Index._filter_indexer_tolerance""" |
nothing calls this directly
no test coverage detected