pandas.Index.searchsorted
- Index.searchsorted(value, side='left', sorter=None)[source]
-
Нахождение индексов для вставки элементов, сохраняя порядок.
Нахождение индексов в отсортированном индексе self, таких, что, если соответствующие элементы в value были вставлены перед индексами, порядок self сохранялся бы.
Примечание
Индекс обязательно должен быть монотонно отсортирован, в противном случае, вероятно, будут возвращены неправильные позиции. Pandas не проверяет это за вас.
- Параметры
-
- value:последовательность или скаляр
-
Значения для вставки в self.
- side:{‘left’, ‘right’}, необязательно
-
Если ‘left’, возвращается индекс первой подходящей позиции. Если ‘right’, возвращается последний такой индекс. Если подходящего индекса нет, возвращается либо 0, либо N (где N — длина self).
- sorter:последовательность целых чисел, необязательно
-
Необязательная последовательность целых индексов, сортирующая self в порядке возрастания. Обычно они являются результатом
np.argsort.
- Возвращает
-
- целое число или массив целых чисел
-
Скаляр или массив точек вставки с той же формой, что и value.
См. также
sort_values-
Сортировка по значениям вдоль одной из осей.
numpy.searchsorted-
Аналогичный метод из NumPy.
Примечания
Для нахождения необходимых точек вставки используется двоичный поиск.
Примеры
>>> ser = pd.Series([1, 2, 3]) >>> ser 0 1 1 2 2 3 dtype: int64
>>> ser.searchsorted(4) 3
>>> ser.searchsorted([0, 4]) array([0, 3])
>>> ser.searchsorted([1, 3], side='left') array([0, 2])
>>> ser.searchsorted([1, 3], side='right') array([1, 3])
>>> ser = pd.Series(pd.to_datetime(['3/11/2000', '3/12/2000', '3/13/2000'])) >>> ser 0 2000-03-11 1 2000-03-12 2 2000-03-13 dtype: datetime64[ns]
>>> ser.searchsorted('3/14/2000') 3>>> ser = pd.Categorical( ... ['apple', 'bread', 'bread', 'cheese', 'milk'], ordered=True ... ) >>> ser ['apple', 'bread', 'bread', 'cheese', 'milk'] Categories (4, object): ['apple' < 'bread' < 'cheese' < 'milk']
>>> ser.searchsorted('bread') 1>>> ser.searchsorted(['bread'], side='right') array([3])
Если значения не отсортированы монотонно, могут быть возвращены неправильные позиции:
>>> ser = pd.Series([2, 1, 3]) >>> ser 0 2 1 1 2 3 dtype: int64
>>> ser.searchsorted(1) 0 # wrong result, correct would be 1
© 2008–2022, AQR Capital Management, LLC, Lambda Foundry, Inc. and PyData Development Team
Licensed under the 3-clause BSD License.
https://pandas.pydata.org/pandas-docs/version/1.5.0/reference/api/pandas.Index.searchsorted.html