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

如何匹配两个dataframe中数值最接近的对应行并生成新表

实现方法

我们可以通过pandas的apply方法搭配自定义匹配函数实现需求,完整代码和逻辑如下:

步骤1:导入依赖并构造测试数据

import pandas as pd

# 构造题目给出的两个示例DataFrame
df_1 = pd.DataFrame({'c1': ['a', 'b', 'c'], 'c2': [0, 0, 2]})
df_2 = pd.DataFrame({'c3': ['d', 'e', 'f'], 'c4': [2, 3, 7]})

步骤2:编写最接近值匹配函数

def get_closest_row(target_val):
    # 计算df_2中所有c4值和目标值的绝对差
    diff_series = abs(df_2['c4'] - target_val)
    # 取差值最小的第一行的索引(如果有多个相同最小差值,默认取最先出现的行,符合示例要求)
    min_diff_idx = diff_series.idxmin()
    # 返回匹配到的c3值
    return df_2.loc[min_diff_idx, 'c3']

步骤3:执行匹配生成结果

# 对df_1的每一行c2值执行匹配,新增匹配到的c3列
df_1['matched_c3'] = df_1['c2'].apply(get_closest_row)

# 如果你需要输出题目示例里的字符串格式,可以执行以下代码
formatted_result = df_1.apply(lambda row: f"{row['c1']}, {row['matched_c3']}", axis=1)
print(formatted_result.to_list())

输出结果说明

执行后最终得到的合并DataFrame结构如下:

c1c2matched_c3
a0d
b0d
c2d

完全符合题目给出的示例要求。如果需要调整多最小差值场景的匹配优先级,只需要修改get_closest_row函数内的索引选取逻辑即可。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 03:30:00