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

如何基于emp ID列对比两个DataFrame识别唯一、非唯一及新增条目

Pandas 双DataFrame按指定键比对实现方案

核心实现基于pandas原生的全外连接能力,通过连接标记直接区分不同来源的记录,无需额外依赖。

前置准备

首先导入pandas库,构造样例数据:

import pandas as pd

# 第一个待比对DataFrame
df1 = pd.DataFrame({
    "emp ID": [1, 2],
    "FirstName": ["Prasanna", "Siva"],
    "Lastname": ["K", "B"]
})

# 第二个待比对DataFrame
df2 = pd.DataFrame({
    "emp ID": [1, 2, 3],
    "FirstName": ["Prasana", "Siva", "Karunas"],
    "Lastname": ["K", "B", "Y"]
})

执行全量关联比对

以emp ID作为关联键做全外连接,开启indicator参数自动标记每条记录的来源表:

compare_result = df1.merge(
    right=df2,
    on="emp ID",
    how="outer",
    indicator=True,
    suffixes=("_df1", "_df2")
)

_merge字段的取值对应三种来源:

  • left_only:记录仅存在于df1
  • right_only:记录仅存在于df2
  • both:记录在两个表中都存在对应emp ID

分类提取目标条目

三类条目的判定规则:

  • 新增条目:仅在df2中存在的记录(即相对df1多出的条目)
  • 单表唯一条目:仅在单个表中存在的记录,包含df1独有、df2独有两部分
  • 非唯一条目:两个表都存在对应emp ID的记录,可进一步校验字段值差异

1. 提取新增条目

# 筛选仅在df2存在的记录,清理字段后缀
new_entries = compare_result[compare_result["_merge"] == "right_only"]\
    .filter(regex="emp ID|_df2$")
new_entries.columns = [col.replace("_df2", "") for col in new_entries.columns]

基于样例数据运行后,会得到emp ID=3的Karunas记录,符合预期。

2. 提取单表唯一条目

# 所有仅在单个表存在的记录
single_table_entries = compare_result[compare_result["_merge"] != "both"]

# 如需单独提取df1独有的记录,执行以下代码
df1_only_entries = compare_result[compare_result["_merge"] == "left_only"]\
    .filter(regex="emp ID|_df1$")
df1_only_entries.columns = [col.replace("_df1", "") for col in df1_only_entries.columns]

3. 提取非唯一条目(含字段差异校验)

# 筛选两表共有的记录
common_entries = compare_result[compare_result["_merge"] == "both"].drop(columns="_merge")

# 校验同emp ID下其他字段是否存在值差异
def has_field_diff(row):
    return (row["FirstName_df1"] != row["FirstName_df2"]) or (row["Lastname_df1"] != row["Lastname_df2"])

common_entries["field_diff"] = common_entries.apply(has_field_diff, axis=1)

# 提取存在字段不一致的记录
diff_entries = common_entries[common_entries["field_diff"]]

基于样例数据运行后,emp ID=1的记录会被标记为存在字段差异(FirstName拼写不同),emp ID=2的记录两表完全一致。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 06:06:56