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

Pandas merge无匹配时用前向最近col1对应col2值填充实现方法

实现方案

你可以使用pandas内置的merge_asof方法完成这种分组有序近似匹配,具体操作如下:

  1. 先对两个DataFrame按关联键排序,merge_asof要求用于匹配的数值列必须为升序排列:
# 按key分组、col1升序排序
DF1 = DF1.sort_values(by=['key', 'col1']).reset_index(drop=True)
DF2 = DF2.sort_values(by=['key', 'col1']).reset_index(drop=True)
  1. 调用merge_asof执行匹配,默认的direction='backward'参数刚好对应“取小于等于当前值的最近记录”的需求:
result = pd.merge_asof(
    left=DF2,  # 保留DF2的所有行
    right=DF1,
    by='key',  # 先按key字段分组
    on='col1'  # 组内按col1做近似匹配
)

效果验证

你可以用以下测试代码验证结果:

import pandas as pd

# 构造测试数据
DF1 = pd.DataFrame({
    'key': [1,1,1],
    'col1': [13,15,18],
    'col2': ['a','b','c']
})
DF2 = pd.DataFrame({
    'key': [1,1,1],
    'col1': [14,15,19]
})

# 排序+匹配
DF1 = DF1.sort_values(['key','col1'])
DF2 = DF2.sort_values(['key','col1'])
result = pd.merge_asof(DF2, DF1, by='key', on='col1')
print(result)

输出结果完全符合预期:

key  col1 col2
0    1    14    a
1    1    15    b
2    1    19    c

内容的提问来源于stack exchange,提问作者Kevin

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 09:36:05