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

为何get_as_dataframe处理不同工作表时表现异常?数值单元格返回NaN

问题分析与解决方案

针对你遇到的「Python读取Excel特定工作表时部分单元格显示NaN,但单独读取单元格、复制到新表或修改原表名后恢复正常」的问题,结合你怀疑GAS(Google Apps Script)关联的方向,给出以下排查和解决思路:

  • 检查GAS残留的单元格格式:GAS操作过的单元格可能被设置了隐藏格式(比如自定义格式为;;;,这种格式会让单元格内容在Excel中不可见,但实际有值),Pandas读取时会误判为空白。可以用openpyxl直接查看单元格的格式属性:
from openpyxl import load_workbook
wb = load_workbook("你的文件路径.xlsx")
ws = wb["有问题的工作表名"]
target_cell = ws["出现NaN的单元格位置"]  # 比如"A1"
print("单元格格式:", target_cell.number_format)
print("实际值:", target_cell.value)

如果格式是;;;或其他特殊隐藏格式,手动改成「常规」格式即可解决。

  • 排查工作表名称的兼容性:原工作表名称可能包含GAS脚本用到的特殊字符(比如全角空格、非ASCII符号、转义字符),Pandas的读取引擎(如xlrd、openpyxl)对这类名称的解析存在异常。修改名称后正常就印证了这点,建议统一使用英文、无特殊字符的工作表名。

  • 强制指定数据类型读取:GAS写入数据时可能存在隐式数据类型错误(比如把数值标记为空白类型),批量读取时Pandas会识别为NaN,但单独读取单元格能拿到原始值。可以在read_excel中强制指定目标列的数据类型:

import pandas as pd
df = pd.read_excel("你的文件路径.xlsx", sheet_name="有问题的工作表名", dtype={"目标列名": str})

先强制转为字符串读取,确认内容后再按需转换数据类型。

  • 修复工作表结构异常:GAS频繁操作可能导致工作表内部XML结构出现微小损坏,复制到新表相当于重建了结构,所以问题消失。可以用Excel自带的「打开并修复」功能处理文件,或者用openpyxl重新保存修复:
from openpyxl import load_workbook
wb = load_workbook("你的文件路径.xlsx")
wb.save("修复后的文件.xlsx")

再用Pandas读取修复后的文件即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.06 12:55:02