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.searchsortedNumPy 的类似方法。
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