pandas.Series.searchsorted#
- Series.searchsorted(значение, сторона='left', sorter=None)[источник]#
Найти индексы, куда следует вставить элементы для сохранения порядка.
Найти индексы в отсортированном Series self таким образом, что если соответствующие элементы в значение были вставлены перед индексами, порядок self будет сохранено.
Примечание
Series должен должен быть монотонно отсортирован, иначе вероятно будут возвращены неправильные позиции. 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