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

如何让pandas merge()在键重复时不生成笛卡尔积并实现指定合并?

实现指定结构的DataFrame合并

因为两个DataFrame的b列值完全重复,直接按b列merge会触发笛卡尔积。要实现行对应合并,需要添加辅助索引列来提供唯一匹配键,具体步骤如下:

  1. 为两个DataFrame添加临时索引列

    import pandas as pd
    
    a = pd.DataFrame({"a": [1,2], "b": [1,1]}).reset_index(drop=False, names='idx')
    b = pd.DataFrame({"c": [3,4], "b": [1,1]}).reset_index(drop=False, names='idx')
    
  2. 同时按临时索引列和b列执行merge,之后删除临时列

    c = a.merge(b, on=['idx', 'b'], how='inner').drop('idx', axis=1)
    

执行后得到的c结构如下:

a  b  c
0  1  1  3
1  2  1  4

完全符合你需要的{'a':[1,2], 'c':[3,4], 'b':[1,1]}格式。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 03:20:14