pandas 1.4.2

NotesParametersReturns
searchsorted(self, value: 'NumpyValueArrayLike | ExtensionArray', side: "Literal['left', 'right']" = 'left', sorter: 'NumpySorter' = None) -> 'npt.NDArray[np.intp] | np.intp'

Find the indices into a sorted Series :None:None:`self` such that, if the corresponding elements in :None:None:`value` were inserted before the indices, the order of :None:None:`self` would be preserved.

note

The Series must be monotonically sorted, otherwise wrong locations will likely be returned. Pandas does not check this for you.

Notes

Binary search is used to find the required insertion points.

Parameters

value : array-like or scalar

Values to insert into :None:None:`self`.

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 suitable index, return either 0 or N (where N is the length of :None:None:`self`).

sorter : 1-D array-like, optional

Optional array of integer indices that sort :None:None:`self` into ascending order. They are typically the result of np.argsort .

Returns

int or array of int

A scalar or array of insertion points with the same shape as :None:None:`value`.

Find indices where elements should be inserted to maintain order.

See Also

numpy.searchsorted

Similar method from NumPy.

sort_values

Sort by the values along either axis.

Examples

This example is valid syntax, but we were not able to check execution
>>> ser = pd.Series([1, 2, 3])
... ser 0 1 1 2 2 3 dtype: int64
This example is valid syntax, but we were not able to check execution
>>> ser.searchsorted(4)
3
This example is valid syntax, but we were not able to check execution
>>> ser.searchsorted([0, 4])
array([0, 3])
This example is valid syntax, but we were not able to check execution
>>> ser.searchsorted([1, 3], side='left')
array([0, 2])
This example is valid syntax, but we were not able to check execution
>>> ser.searchsorted([1, 3], side='right')
array([1, 3])
This example is valid syntax, but we were not able to check execution
>>> 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]
This example is valid syntax, but we were not able to check execution
>>> ser.searchsorted('3/14/2000')
3
This example is valid syntax, but we were not able to check execution
>>> ser = pd.Categorical(
...  ['apple', 'bread', 'bread', 'cheese', 'milk'], ordered=True
... )
... ser ['apple', 'bread', 'bread', 'cheese', 'milk'] Categories (4, object): ['apple' < 'bread' < 'cheese' < 'milk']
This example is valid syntax, but we were not able to check execution
>>> ser.searchsorted('bread')
1
This example is valid syntax, but we were not able to check execution
>>> ser.searchsorted(['bread'], side='right')
array([3])

If the values are not monotonically sorted, wrong locations may be returned:

This example is valid syntax, but we were not able to check execution
>>> ser = pd.Series([2, 1, 3])
... ser 0 2 1 1 2 3 dtype: int64
This example is valid syntax, but we were not able to check execution
>>> ser.searchsorted(1)  # doctest: +SKIP
0  # wrong result, correct would be 1
See :

Local connectivity graph

Hover to see nodes names; edges to Self not shown, Caped at 50 nodes.

Using a canvas is more power efficient and can get hundred of nodes ; but does not allow hyperlinks; , arrows or text (beyond on hover)

SVG is more flexible but power hungry; and does not scale well to 50 + nodes.

All aboves nodes referred to, (or are referred from) current nodes; Edges from Self to other have been omitted (or all nodes would be connected to the central node "self" which is not useful). Nodes are colored by the library they belong to, and scaled with the number of references pointing them


File: /pandas/core/series.py#2837
type: <class 'function'>
Commit: