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

Pandas执行merge时出现笛卡尔积而非内连接的问题排查

内连接得到笛卡尔积的原因及解决办法

原因分析

这是内连接(inner join)的正常行为,并非异常。内连接的核心逻辑是:将左表与右表中所有连接键(on指定的列)匹配的行,生成所有可能的组合。

你的df1和df2中,operationid与siteid的组合完全重复:

  • df1包含2行(632126, 66)
  • df2同样包含2行(632126, 66)

按照内连接规则,左表的每一行都会和右表中所有匹配的行配对,最终得到2×2=4行结果,呈现出类似笛卡尔积的形式。

解决方法

如果希望合并结果与原DataFrame行数一致,可先对其中一个DataFrame去重后再执行合并:

# 对df2去重后与df1内连接
result = df1.merge(df2.drop_duplicates(), how='inner', on=['operationid', 'siteid'])

或者,也可以在合并完成后直接对结果去重:

# 合并后去重
result = df1.merge(df2, how='inner', on=['operationid', 'siteid']).drop_duplicates()

另外注意:原始合并代码中,on参数的列名需用字符串形式(['operationid', 'siteid']),直接写变量名可能引发错误(除非你提前定义了对应变量)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 10:10:34