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

如何基于另一DataFrame的数据为当前DataFrame填充指定列

解决方案

核心思路

因为表A数据量远小于表B,优先将小表转为映射字典,直接对大表的匹配字段做映射,避免大表关联的性能损耗,匹配不到的字段默认返回NaN,可根据需求替换为0或空值。

实现代码(Python Pandas)

示例数据构造(实际使用时替换为自己的表A、表B即可)

import pandas as pd

# 构造表A
df_a = pd.DataFrame({
    'Account': [11,12,13,14,15,16],
    'Note': ['a','b','c','d','e','f']
})

# 构造表B
df_b = pd.DataFrame({
    'Account': [11,25,42,14,15,19,26]
})

核心逻辑

# 把表A转为{Account:Note}的映射字典
note_map = df_a.set_index('Account')['Note'].to_dict()

# 给表B新增Note列,直接映射即可
df_b['Note'] = df_b['Account'].map(note_map)

# 可选操作:如果需要把NaN替换为0,加下面这行
# df_b['Note'] = df_b['Note'].fillna(0)

# 可选操作:如果需要把NaN替换为空白字符串,加下面这行
# df_b['Note'] = df_b['Note'].fillna('')

输出结果验证

最终得到的df_b就是需求中的表C,默认输出效果如下:

Account Note
0       11    a
1       25  NaN
2       42  NaN
3       14    d
4       15    e
5       19  NaN
6       26  NaN

性能说明

该实现方式在表B数据量远大于表A的场景下,性能远高于pd.merge左连接实现,仅需要遍历一次大表的Account字段,不需要做关联笛卡尔积计算,适合大数据量业务场景。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 12:15:03