pandas.Series.searchsorted#
- Series.searchsorted(value, side='left', sorter=None)[源代码][源代码]#
查找元素应插入以保持顺序的索引。
找到排序后的 Series self 的索引,使得如果 value 中的对应元素在索引之前插入,self 的顺序将被保留。
备注
序列 必须 单调排序,否则可能会返回错误的位置。Pandas 不会 为你检查这一点。
- 参数:
- 值类似数组或标量
要插入到 self 中的值。
- 侧边{‘left’, ‘right’}, 可选
如果 ‘left’,则给出找到的第一个合适位置的索引。如果 ‘right’,则返回最后一个这样的索引。如果没有合适的索引,则返回 0 或 N(其中 N 是 self 的长度)。
- sorter1-D 类数组, 可选
可选的整数索引数组,将 self 排序为升序。它们通常是
np.argsort
的结果。
- 返回:
- int 或 int 数组
一个标量或插入点的数组,其形状与 value 相同。
参见
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[s]
>>> 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