使用pandas.to_excel导出Excel时遇engine_kwargs参数错误求助
解决pandas写入Excel时的
TypeError: ExcelFormatter.write()关键字参数错误 错误信息
文件路径:~\AppData\Local\anaconda3\envs\prod-env-text-bert\Lib\site-packages\pandas\core\generic.py:2345
在to_excel方法中
.. versionchanged:: 1.4.0 Zstandard支持。TypeError: ExcelFormatter.write()获得意外的关键字参数'engine_kwargs'
复现代码
# 导入包 import pandas as pd # 数据字典 dct = {'ID': {0: 23, 1: 43, 2: 12, 3: 13, 4: 67, 5: 89, 6: 90, 7: 56, 8: 34}, 'Name': {0: 'Ram', 1: 'Deep', 2: 'Yash', 3: 'Aman', 4: 'Arjun', 5: 'Aditya', 6: 'Divya', 7: 'Chalsea', 8: 'Akash' }, 'Marks': {0: 89, 1: 97, 2: 45, 3: 78, 4: 56, 5: 76, 6: 100, 7: 87, 8: 81}, 'Grade': {0: 'B', 1: 'A', 2: 'F', 3: 'C', 4: 'E', 5: 'C', 6: 'A', 7: 'B', 8: 'B'} } # 创建DataFrame data = pd.DataFrame(dct) # 写入Excel文件 data.to_excel("output.xlsx")
环境版本信息
numpy 1.24.4 numba 0.57.1 xlrd 2.0.1 XlsxWriter 3.1.2 pandas 2.0.3 Python 3.11.5
环境搭建步骤
注:未标注pip install的包通过Anaconda IDE安装。
Python 3.11.5 # 安装C++构建工具本地操作步骤 选择:工作负载 → 使用C++的桌面开发 单个组件仅选:Windows 10 SDK、C++ x64/x86构建工具 安装后重启 #pip install -U bertopic pip install bertopic[spacy] pandas pip install numpy==1.24.4 pip install numba==0.57.1 -- 需检查numba与numpy的版本兼容性 pip install matplotlib wordcloud pyarrow openpyxl pip install xlsxwriter==3.1.2 pip install gensim pip install xlrd python -m spacy download en_core_web_sm pip install langdetect pip install google_trans_new pip install symspellpy seaborn
问题原因
该错误源于pandas 2.0.x版本与旧版XlsxWriter(如你使用的3.1.2)存在兼容性冲突。pandas 2.0开始在to_excel方法中新增engine_kwargs参数,但旧版XlsxWriter的ExcelFormatter.write()方法未适配该参数,导致调用时抛出类型错误。
解决方法
方法1:升级XlsxWriter到兼容版本
执行命令升级XlsxWriter到支持engine_kwargs的版本(推荐升级至最新稳定版):
pip install --upgrade xlsxwriter
XlsxWriter从3.2.0版本开始适配pandas 2.0的engine_kwargs参数,升级后即可正常使用data.to_excel()方法。
方法2:指定openpyxl作为写入引擎
若不想升级XlsxWriter,可在to_excel中指定已安装的openpyxl作为引擎:
data.to_excel("output.xlsx", engine="openpyxl")
方法3:降级pandas到兼容版本
若依赖环境限制无法升级XlsxWriter,可将pandas降级到1.5.x版本(该版本不会传递engine_kwargs参数给XlsxWriter):
pip install pandas==1.5.3
内容的提问来源于stack exchange,提问作者Sade
相关产品推荐
相关产品推荐

