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
相关产品推荐
相关产品推荐

