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

基于id和time左连接DataFrame后行数多于左表,原因是什么?

左连接后结果行数多于左表的原因分析

你遇到的这种情况,核心原因是右表(df_3)中存在重复的[id, time]组合,或者左表的连接键组合在右表中能匹配到多条记录,具体说明如下:

  • 右表有重复的连接键组合:当df_1中的某一行,在df_3里通过[id, time]能找到N条匹配记录时,左连接会把这一行复制N次,分别和右表的N条记录合并,最终总行数就会超过df_1的行数。
  • 左表本身存在重复的连接键组合:如果df_1里已经有重复的[id, time]行,再加上右表对应组合也有重复,会进一步放大行数的增加(本质还是匹配时的笛卡尔积效应)。

举个简单例子:
假设df_1只有1行:

id  time        col1
1   2024-01-01  a

df_3有2行相同的[id, time]:

id  time        col2
1   2024-01-01  x
1   2024-01-01  y

执行你写的左连接代码后,结果会变成2行:

id  time        col1  col2
1   2024-01-01  a     x
1   2024-01-01  a     y

另外补充一点:左连接的预期不是“仅保留df_1的行数”,而是保留df_1的所有行记录,但如果右表有多个匹配项,就会产生行的复制,这是正常的连接逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 13:03:08