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/2.2.2/reference/api/pandas.Index.searchsorted.html