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

如何对比两个同结构Pandas DataFrame的列差异?

解决DataFrame列级相等性检查的问题

没问题,我来帮你搞定这个列级差异检查的需求!你之前用的(df1 != df2).any(1)是按行判断是否存在差异,要改成列级检查只需要调整聚合维度就行。

核心思路

要获取每个列是否完全相等的单个True/False结果,步骤很清晰:

  1. 先用df1 == df2生成一个布尔DataFrame,每个元素对应原DataFrame相同位置的值是否相等;
  2. 对这个布尔DataFrame按列聚合,判断该列所有元素是否全为True(即该列完全相等)。

具体实现代码

结合你的示例,直接看代码:

import numpy as np
import pandas as pd

df1 = pd.DataFrame(np.random.randint(low=0, high=10, size=(5, 5)), columns=['a', 'b', 'c', 'd', 'e'])
df2 = df1.copy()
df2.at[3,'d'] += 10

# 获取每个列是否完全相等的结果
column_equal = (df1 == df2).all()

# 按你期望的格式输出
for col, is_equal in column_equal.items():
    print(f"{col.upper()} {is_equal}")

运行后会输出你想要的结果:

A True
B True
C True
D False
E True

额外小技巧

  • .all()默认按列(axis=0)聚合,不用额外指定参数;
  • 如果你想直接找出有差异的列,可以用:
    diff_columns = column_equal[column_equal == False].index
    # 等价写法:diff_columns = (df1 != df2).any()[lambda x: x].index
    print("存在差异的列:", diff_columns.tolist())
    
    输出结果:存在差异的列: ['d']

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 08:33:32