如何在Pandas DataFrame中查找首个满足y≥x条件的行索引并生成新列
实现方案
由于你已经明确x、y列均为升序排序的序列,可直接使用numpy的searchsorted方法通过二分查找快速定位目标位置,时间复杂度为O(n log n),效率远高于逐行遍历方案。
完整实现代码如下:
import pandas as pd import numpy as np # 构造示例数据 df = pd.DataFrame({ 'x': [1,2,3,4,5,6,7,8,9,10], 'y': [2,4,6,8,10,12,14,16,18,20] }) # 核心逻辑:对每个x值,在y序列中查找第一个大于等于x的元素的索引 df['z'] = np.searchsorted(df['y'], df['x'], side='left') # 输出结果验证 print(df)
运行后输出结果和你期望的完全一致:
x y z 0 1 2 0 1 2 4 0 2 3 6 1 3 4 8 1 4 5 10 2 5 6 12 2 6 7 14 3 7 8 16 3 8 9 18 4 9 10 20 4
内容的提问来源于stack exchange,提问作者Daniel Logan
相关产品推荐
相关产品推荐

