pandas.Series.searchsorted#

Series.searchsorted(value, side='left', sorter=None)[源代码]#

查找应插入元素以维持顺序的索引。

查找排序过的 Series self 的索引,如果 value 中的对应元素插入到该索引之前,则 self 的顺序将保持不变。

备注

Series 必须 是单调递增排序的,否则很可能会返回错误的索引。Pandas 不会 为您检查此项。

Parameters:
valuearray-like 或 scalar

插入到 self 的值。

{‘left’, ‘right’},可选

如果是 ‘left’,则返回找到的第一个合适位置的索引。如果是 ‘right’,则返回最后一个合适位置的索引。如果没有合适的索引,则返回 0 或 N(其中 N 是 self 的长度)。

sorter一维类数组,可选

可选的整数索引数组,用于将 self 按升序排序。它们通常是通过 np.argsort 得到的。

Returns:
int 或 int 数组

value 形状相同的标量或插入点数组。

参见

sort_values

沿任一轴按值进行排序。

numpy.searchsorted

NumPy 的类似方法。

Notes

使用二分搜索查找所需的插入点。

Examples

>>> 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