pandas.Index.searchsorted#

Индекс.searchsorted(значение, сторона='left', sorter=None)[источник]#

Найти индексы, куда следует вставить элементы для сохранения порядка.

Найти индексы в отсортированном Index self таким образом, что если соответствующие элементы в значение были вставлены перед индексами, порядок self будет сохранено.

Примечание

Индекс должен должен быть монотонно отсортирован, иначе вероятно будут возвращены неправильные позиции. Pandas не проверьте это для вас.

Параметры:
значениемассивоподобный объект или скаляр

Значения для вставки в self.

сторона{‘left’, ‘right’}, необязательно

Если 'left', возвращается индекс первого подходящего местоположения. Если 'right', возвращается индекс последнего такого местоположения. Если подходящего индекса нет, возвращается либо 0, либо N (где N - длина self).

sorter1-D array-like, необязательно

Необязательный массив целочисленных индексов, которые сортируют self в порядке возрастания. Обычно они являются результатом np.argsort.

Возвращает:
целое число или массив целых чисел

Скаляр или массив точек вставки с той же формой, что и значение.

Смотрите также

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