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

如何基于多列匹配将一个DataFrame的指定列添加到另一个DataFrame

Pandas 双字段匹配补全缺失ID方案

你可以直接用pandas的merge左连接实现需求,以Name、Age两个字段作为匹配键,从完整表中映射对应的ID值补到缺失表中,具体实现代码如下:

首先导入依赖库:

import pandas as pd

模拟你给出的两个DataFrame示例:

# 数据完整的DataFrame
df_full = pd.DataFrame({
    'ID': ['012', '013', '014'],
    'Name': ['Dave', 'Colin', 'Dave'],
    'Age': [45, 63, 52]
})

# ID字段缺失的DataFrame
df_missing = pd.DataFrame({
    'ID': [None, None, None],
    'Name': ['Dave', 'Colin', 'Dave'],
    'Age': [45, 63, 52]
})

核心补全逻辑:

df_filled = pd.merge(
    # 左侧保留缺失ID表的所有行,删除原有空ID列
    left=df_missing.drop(columns=['ID']),
    # 右侧仅取完整表的ID和两个匹配字段,避免多余字段干扰
    right=df_full[['ID', 'Name', 'Age']],
    # 指定匹配依据为Name、Age两个字段
    on=['Name', 'Age'],
    # 采用左连接,完全保留缺失表的原有数据行顺序和数量
    how='left'
)

运行后得到的df_filled就是补全ID后的结果,和你需要的结构完全一致。

注意:如果你的业务场景中存在同一个Name+Age组合对应多个不同ID的情况,左连接会生成重复行,可根据业务规则添加去重逻辑,比如保留第一个匹配到的ID,可在merge后追加如下代码:

df_filled = df_filled.drop_duplicates(subset=['Name', 'Age'], keep='first')

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 08:15:03