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

执行左连接与去重后数据行数为何多于原数据集?

左连接后数据集行数增加的原因分析

已知iso_selected.shape为(257, 2),gravity.shape为(4428288, 79),执行左连接代码:

gravity1 = gravity.merge(iso_selected, how="left", left_on = "iso3_o", right_on="iso3").drop_duplicates()

得到的gravity1.shape为(4571136, 81),行数多于原gravity数据集,核心原因如下:

  • iso_selected的iso3列存在重复值:左连接的逻辑是,原gravity表中每一行,都会匹配iso_selected表中所有iso3等于iso3_o的行。如果iso_selected里某个iso3对应多行数据,那gravity中匹配到该值的行就会被“复制”多份,分别和这些行合并,直接导致总行数膨胀。比如gravity里有1行iso3_o="CHN",iso_selected里iso3="CHN"有2行,合并后这1行就会变成2行。
  • drop_duplicates()没解决问题:你调用了去重方法但行数仍增加,说明合并产生的行并非完全重复——这些新增行是因为iso_selected中同iso3对应的其他字段值不同,导致合并后的行存在差异,drop_duplicates()默认检查所有字段,这类行不会被剔除。

验证方法

先检查iso_selected中iso3列的重复数量:

print(iso_selected['iso3'].duplicated().sum())

如果结果大于0,就坐实了是重复匹配键导致的行数增加。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 01:36:01