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

Python Pandas中如何基于关联字段跨表取值实现表连接

Pandas 按关联键合并两表的简洁规范写法

你的现有写法逻辑正确,但可以通过优化操作顺序、采用链式写法让代码更简洁、性能更好,同时规避容易出错的细节问题。

优化思路

  • 不需要等合并完成后再筛选列,提前把主表中用不到的Supplier、Ship_From字段过滤掉,减少合并过程处理的数据量,数据量级大时性能提升明显
  • 用链式写法整合多步操作,避免多次赋值中间变量,同时不推荐使用inplace=True参数(Pandas官方已不推荐该写法,后续版本存在兼容性风险)
  • 注意字段名大小写匹配:你的示例中主表字段是大写开头的Description,原代码里写的小写description会触发字段不存在的报错

推荐代码实现

# 链式写法完成合并、去重,逻辑清晰性能更好
result = (
    orders
    .merge(
        # 提前只取主表需要的关联键和结果字段,过滤冗余列
        master[['item_id', 'Description']],
        on="item_id",
        how="left"
    )
    .drop_duplicates(keep="first")
)

额外说明

  • drop_duplicates里参数subset=None、keep='first'都是默认值,不需要额外声明,写出来仅作语义明确用
  • 如果你的数据符合业务常规约束:Orders表的(Date, item_id)组合无重复、Master主表的item_id是唯一主键,那左连不会产生额外重复行,可以直接省略去重步骤,代码可以进一步简化:
# 关联键均唯一时可省略去重
result = orders.merge(master[['item_id', 'Description']], on="item_id", how="left")

运行上述代码得到的结果完全匹配你给出的预期输出,仅包含Date、item_id、Description三个字段,关联值一一对应。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.01 19:18:41