使用pandas保存DataFrame至Excel时遇AttributeError:XlsxWriter无save属性
问题
我尝试使用pandas将DataFrame中的数据保存至Excel文件,编写了如下代码:
import pandas as pd import xlsxwriter data = {'Name': ['John', 'Jane', 'Adam'], 'Age': [25, 30, 35], 'Gender': ['M', 'F', 'M']} df = pd.DataFrame(data) writer = pd.ExcelWriter('output.xlsx', engine='xlsxwriter') df.to_excel(writer, sheet_name='Sheet1') workbook = writer.book worksheet = writer.sheets['Sheet1'] # Example: Adding a chart chart = workbook.add_chart({'type': 'line'}) chart.add_series({'values': '=Sheet1.$B$2:$B$4'}) worksheet.insert_chart('D2', chart) writer.save()
但运行时出现如下错误:
writer.save() ^^^^^^^^^^^ AttributeError: 'XlsxWriter' object has no attribute 'save'. Did you mean: '_save'?
解决方法
错误原因是新版pandas中,pd.ExcelWriter搭配xlsxwriter引擎时,save()方法已被弃用,可通过以下两种方式解决:
方法1:使用上下文管理器(推荐)
用with语句包裹pd.ExcelWriter,程序会自动完成文件的保存与关闭,无需手动调用方法:
import pandas as pd import xlsxwriter data = {'Name': ['John', 'Jane', 'Adam'], 'Age': [25, 30, 35], 'Gender': ['M', 'F', 'M']} df = pd.DataFrame(data) with pd.ExcelWriter('output.xlsx', engine='xlsxwriter') as writer: df.to_excel(writer, sheet_name='Sheet1') workbook = writer.book worksheet = writer.sheets['Sheet1'] # 添加图表 chart = workbook.add_chart({'type': 'line'}) chart.add_series({'values': '=Sheet1.$B$2:$B$4'}) worksheet.insert_chart('D2', chart) # 退出with代码块后自动保存并关闭文件
方法2:替换save()为close()
如果不想使用上下文管理器,直接将原代码中的writer.save()替换为writer.close()即可:
# 保留原代码其他部分不变 worksheet.insert_chart('D2', chart) writer.close() # 替换原有的writer.save()
内容的提问来源于stack exchange,提问作者Straniero95
相关产品推荐
相关产品推荐

