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

基于ID列合并两个DataFrame及merge行数增多问题咨询

数据集合并方案与merge行数异常解释

一、实现目标合并的方法

你需要保留第二个数据集的所有行,并匹配第一个数据集对应ID的附加信息,用R或Python都能直接实现:

R 实现代码

假设小数据集为df_small,大数据集为df_large:

merged_df <- merge(df_large, df_small, by = "id", all.x = TRUE)
  • by = "id":指定按ID列匹配
  • all.x = TRUE:保留左表(df_large)的所有行,匹配右表(df_small)的对应数据,完全符合你给出的示例结果——第二个数据集的每一行都对应上第一个数据集的name和country,第一个数据集中无匹配的ID(如示例里的id=3)会被自动排除。

Python(pandas)实现代码

import pandas as pd
merged_df = pd.merge(df_large, df_small, on="id", how="left")

二、merge(all = FALSE)行数多于原总和的原因

merge(all = FALSE)是R中的内连接,仅保留两个数据集都存在的ID行。行数异常增多的核心原因是:某一方或双方的ID列存在重复值,匹配时会产生笛卡尔积。

举个直观例子:

  • 若df_small里id=2有2行重复:
id name country
2  Mary Portugal
2  Mary Portugal
  • df_large里id=2有3行重复:
id time
2  11:12
2  06:34
2  07:21

内连接后,id=2的匹配结果会是2×3=6行,这部分行数直接超过了原两个数据集里id=2的行数总和(2+3=5)。如果数据集中存在大量这类重复ID,最终合并后的总行数就会超过两个原数据集的行数总和。

此外,即使单个数据集内ID无重复,但两个数据集的ID重复次数相乘的总和超过原行数总和时,也会出现该现象。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 13:12:50