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

如何合并仅有一个同名列的两个DataFrame并得到对比结果

实现方案说明

可行方案

你要的输出效果可以通过merge和join实现,compare无法满足需求。

使用merge实现

核心逻辑是按A列做全外连接,给左右表同名字段配置不同后缀:

import pandas as pd

# 构造测试数据
df_left = pd.DataFrame({'A': ['a', 'b', 'd']})
df_right = pd.DataFrame({'A': ['a', 'b', 'c', 'd']})

# 外连接合并
result = df_left.merge(
    df_right,
    on='A',
    how='outer',
    suffixes=('', '_1')
).sort_values('A').reset_index(drop=True)

运行后得到的result和你期望的输出完全一致。

使用join实现

join默认按索引关联,需要先把A列设为索引再做外连接:

result = df_left.set_index('A').join(
    df_right.set_index('A'),
    how='outer',
    lsuffix='',
    rsuffix='_1'
).reset_index()

为什么compare不行

compare函数的作用是对比**结构完全一致(行数、列数都相同)**的两个DataFrame,仅返回两边值存在差异的位置,你的两个输入DataFrame行数不同,不满足compare的使用前提,无法得到你要的输出。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 09:36:02