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

Pandas向量化实现:查找另一DataFrame中最近的未来时间

可以,使用pandas内置的merge_asof函数即可实现完全等效的向量化操作,替代逐行循环,大数据量下性能提升非常明显。

实现代码

# 把索引转为普通列用于匹配,pandas版本低于1.5.0可改用 a = a.rename_axis('a_dt').reset_index() 写法
a = a.reset_index(names='a_dt')
b = b.reset_index(names='b_dt')

# 核心逻辑:向前匹配,找右表第一个大于等于左表a_dt的记录
merge_result = pd.merge_asof(
    left=a,
    right=b,
    left_on='a_dt',
    right_on='b_dt',
    direction='forward'
)

# 整理成和原逻辑一致的输出格式
a = merge_result.set_index('a_dt').rename(columns={'b_dt': 'next_b'})
# 只保留原a的列和新增的next_b列,删掉b中带来的其他无关列
a = a[[0, 'next_b']]

逻辑说明

merge_asof是pandas专门用于有序键匹配的向量化函数,其中direction='forward'参数刚好对应需求:从右表b中找到第一个大于等于左表a当前索引值的记录,匹配不到的位置自动返回NaT,和原循环逻辑完全一致。

注意使用该函数前需要保证两个表的匹配键(这里是两个DataFrame的索引)都是升序排列的,你示例中的数据默认生成的索引已经满足该条件。


内容的提问来源于stack exchange,提问作者D. Reagan

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 19:36:03