You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 00:36:07