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

