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

如何对比不同形状的DataFrame并生成列级并排对比结果

实现两个不同形状DataFrame的列级并排对比

针对不同形状的DataFrame,要实现列级的并排对比,可以通过行对齐+逐列对比+列拼接的方式完成,具体步骤如下:

1. 准备数据与导入依赖

import pandas as pd

# 定义原始DataFrame
df1 = pd.DataFrame({
    'fname': ['Chris', 'John', 'Jane', 'will'],
    'lname': ['Potter', 'Doe', 'vw', 'Tesla'],
    'age': [23, 32, 25, 45]
})

df2 = pd.DataFrame({
    'fname': ['George', 'John', 'Jane'],
    'lname': ['Potter', 'Hall', 'vw'],
    'age': [23, 32, 27]
})

2. 对齐两个DataFrame的行

由于两个DataFrame行数不同,先获取所有索引的并集,用reindex统一行结构,缺失值用NaN填充:

all_index = df1.index.union(df2.index)
df1_aligned = df1.reindex(all_index)
df2_aligned = df2.reindex(all_index)

3. 逐列对比并构造列级并排结果

遍历每一列,对比两个DataFrame对应位置的值,生成PASS/FAIL结果,再将df1列、对比结果、df2列按顺序拼接:

result_df = pd.DataFrame()

for col in df1.columns:
    # 对比列值是否相等(自动处理NaN的情况,NaN与任何值对比都返回False)
    compare_res = df1_aligned[col].eq(df2_aligned[col]).map({True: 'PASS', False: 'FAIL'})
    # 拼接当前列的对比组
    result_df = pd.concat([
        result_df,
        df1_aligned[[col]].rename(columns={col: f"{col}_df1"}),
        pd.DataFrame(compare_res, columns=[f"{col}_RESULT"]),
        df2_aligned[[col]].rename(columns={col: f"{col}_df2"})
    ], axis=1)

4. 查看最终结果

print(result_df)

输出结果:

fname_df1 fname_RESULT fname_df2 lname_df1 lname_RESULT lname_df2  age_df1 age_RESULT  age_df2
0     Chris         FAIL    George    Potter          PASS    Potter     23.0       PASS     23.0
1      John         PASS      John       Doe          FAIL      Hall     32.0       PASS     32.0
2      Jane         PASS      Jane        vw          PASS        vw     25.0       FAIL     27.0
3      will         FAIL       NaN     Tesla          FAIL       NaN     45.0       FAIL      NaN

自定义对比逻辑(可选)

如果需要更灵活的对比规则(比如数值型字段允许误差范围),可以修改对比逻辑,以age列为例:

# 示例:年龄差值≤2时判定为PASS
compare_res = abs(df1_aligned['age'] - df2_aligned['age']).fillna(999) <= 2
compare_res = compare_res.map({True: 'PASS', False: 'FAIL'})

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 13:17:32