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

DataFrame.equals()返回False但各列与索引均相等,列顺序是否为原因?

DataFrame.equals()返回False的原因及解决办法

Pandas的DataFrame.equals()方法是严格校验列顺序的,它会按照两个DataFrame各自的列顺序逐位置比对数据。哪怕两个DataFrame的列集合完全一致、每列对应数据相等,只要列的排列顺序不同,整体的equals校验就会返回False。

你循环校验单列时,是通过列名去匹配df1和df2的对应列(df1[col].equals(df2[col])),相当于提前对齐了列名,所以每列都返回True;但df1.equals(df2)是直接按各自的列顺序逐列比对,列顺序不一致就会导致整体不匹配。

解决办法

  • 对齐列顺序后再比对:
    df1.equals(df2[df1.columns])
    
  • 对两个DataFrame的列排序后再比对:
    df1.sort_index(axis=1).equals(df2.sort_index(axis=1))
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.06 09:57:06