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

使用Pandas对比两个Excel工作表结果与预期不符的原因

差异原因说明

你得到的运行结果和预期不符,是两个问题共同导致的:

  • 默认表头识别吞掉了第一行数据:pandas.read_excel()方法默认参数为header=0,会自动把读取范围的第一行当做DataFrame的列名,不会纳入数据行参与对比。
    按你的原始代码逻辑读取后:
    • Sheet1的第一行值a被识别为列名,实际存入df1的数据只有4行,行索引0~3对应的值依次是2、3、4、b
    • Sheet2的第一行值1被识别为列名,实际存入df2的数据只有4行,行索引0~3对应的值依次是2、3、4、5
      两个数组做等值判断时,前3行数值完全匹配,只有行索引3的位置值分别为b和5存在差异,因此实际输出3 0,和你的运行结果完全吻合。
  • 行号计数规则混淆:pandas的行索引默认从0开始计数,和Excel界面从1开始标记行号的规则不同。就算你正确读入全部5行数据,最后一行的索引也是4,不存在索引为5的行,自然不可能返回5 0的位置结果。
修正方案

读取Excel时手动指定header=None,明确告知pandas当前文件没有预设表头,所有行都作为数据读入即可:

import pandas as pds
import numpy as np
df1= pds.read_excel('/gdrive/MyDrive/file.xlsx',sheet_name=0, header=None)
df2= pds.read_excel('/gdrive/MyDrive/file.xlsx',sheet_name=1, header=None)
comparison_values = df1.values == df2.values
rows,cols=np.where(comparison_values==False)
for item in zip(rows,cols):
    print(item[0],item[1])

修正后代码运行输出为0 0和4 0,对应两个工作表第一行、第五行的差异,其中索引4就对应你预期里Excel行号为5的位置。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 12:54:27