- API reference
- Series
- pandas.Serie...
pandas.Series.searchsorted#
- Series.searchsorted(value,side='left',sorter=None)[source]#
Find indices where elements should be inserted to maintain order.
Find the indices into a sorted Seriesself such that, if thecorresponding elements invalue were inserted before the indices,the order ofself would be preserved.
Note
The Seriesmust be monotonically sorted, otherwisewrong locations will likely be returned. Pandas doesnotcheck this for you.
- Parameters:
- valuearray-like or scalar
Values to insert intoself.
- side{‘left’, ‘right’}, optional
If ‘left’, the index of the first suitable location found is given.If ‘right’, return the last such index. If there is no suitableindex, return either 0 or N (where N is the length ofself).
- sorter1-D array-like, optional
Optional array of integer indices that sortself into ascendingorder. They are typically the result of
np.argsort.
- Returns:
- int or array of int
A scalar or array of insertion points with thesame shape asvalue.
See also
sort_valuesSort by the values along either axis.
numpy.searchsortedSimilar method from NumPy.
Notes
Binary search is used to find the required insertion points.
Examples
>>>ser=pd.Series([1,2,3])>>>ser0 11 22 3dtype: 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']))>>>ser0 2000-03-111 2000-03-122 2000-03-13dtype: 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])
If the values are not monotonically sorted, wrong locationsmay be returned:
>>>ser=pd.Series([2,1,3])>>>ser0 21 12 3dtype: int64
>>>ser.searchsorted(1)0 # wrong result, correct would be 1