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

Python多DataFrame关联查询性能优化求助(替代循环)

高效实现多DataFrame条件匹配方案

核心思路

放弃逐行循环,改用pandas的向量化合并+条件判断,利用底层优化的批量操作大幅提升效率,完全适配数据量增长的场景。

实现步骤

  1. 合并目标列到主表
    先将table2的Marca列、table3的Name列分别通过共同id合并到table1中:

    # 仅合并需要的列,减少内存占用
    table1 = table1.merge(table2[["id", "Marca"]], on="id", how="left")
    table1 = table1.merge(table3[["id", "Name"]], on="id", how="left")
    
  2. 条件生成新列
    使用np.where或pandas原生where方法,根据condition值选择对应列的值:

    import numpy as np
    
    # 方法1:用numpy的where
    table1["list_nombres"] = np.where(
        table1["condition"] == "legalizado",
        table1["Marca"],
        table1["Name"]
    )
    
    # 方法2:用pandas的where(逻辑相反,满足条件保留原列,否则替换)
    table1["list_nombres"] = table1["Marca"].where(
        table1["condition"] == "legalizado",
        table1["Name"]
    )
    
  3. 清理临时列(可选)
    如果不需要保留合并进来的Marca和Name列,可删除:

    table1 = table1.drop(["Marca", "Name"], axis=1)
    

注意事项

  • 确保三个表的id列数据类型一致(比如都是int或str),避免合并时出现匹配异常;
  • 若存在id匹配不到的情况,结果会出现NaN,可根据业务需求用fillna()填充默认值。

内容的提问来源于stack exchange,提问作者Isabel Meneses Leal

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 18:39:40