如何合并仅有一个同名列的两个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
相关产品推荐
相关产品推荐

