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

如何将Excel计算列的数值读取到Pandas DataFrame?

解决Excel计算列读取为DataFrame时显示NaN/公式的问题

方法1:用openpyxl直接读取计算后的值(推荐)

利用openpyxl的data_only=True参数加载工作簿,可直接获取单元格计算后的数值,而非公式字符串:

import openpyxl
import pandas as pd

# 加载工作簿,指定读取计算结果而非公式
wb = openpyxl.load_workbook('data.xlsx', data_only=True)
ws = wb.active  # 取第一个工作表

# 转换为DataFrame
row_data = [row for row in ws.iter_rows(values_only=True)]
df = pd.DataFrame(row_data[1:], columns=row_data[0])  # 假设第一行为表头

注意:该方法依赖Excel已计算过公式并保存过文件。若文件从未打开计算过,需先手动打开Excel保存一次,否则data_only=True仍可能读不到值。

方法2:用xlwings触发公式计算并读取

如果Excel文件未保存计算结果,xlwings可调用Excel引擎强制计算公式,再读取数值。解决依赖报错需确保安装桌面版Excel(Windows/Mac),并匹配xlwings版本:

import xlwings as xw
import pandas as pd

# 后台启动Excel实例,打开文件
with xw.App(visible=False) as app:
    wb = xw.Book('data.xlsx')
    ws = wb.sheets[0]  # 第一个工作表
    
    # 强制触发全表公式计算
    wb.app.calculate()
    
    # 读取为DataFrame
    df = ws.range('A1').options(pd.DataFrame, header=1, index=False).value
    
    # 可选:保存计算后的文件,后续读取更便捷
    wb.save('data_calculated.xlsx')

常见报错排查:执行pip install xlwings确保最新版本,Windows/Mac需安装官方桌面版Excel,避免WPS等替代软件的兼容问题。

方法3:修复pandas读取NaN的问题

pandas的pd.read_excel默认读取公式时,若Excel未保存计算结果会显示NaN,可通过以下方式解决:

  • 先手动打开Excel文件,按Ctrl+S保存计算后的结果,再用pandas读取:
import pandas as pd
df = pd.read_excel('data.xlsx', sheet_name=0)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 13:25:17