Spec-Zone.ru › pandas 2

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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API