python - 如果工作表不存在,熊猫将工作表附加到工作簿,否则覆盖工作表
问题描述
我正在使用 pandas 更新现有的 Excel 工作簿。使用ExcelWriter
对象时,如果工作表存在,我可以覆盖工作表并创建新工作表吗?我有附加新工作表的代码,但是当我尝试覆盖现有工作表时,它会附加一个名称略有不同的新工作表(例如:如果工作表“data1”存在,运行代码会附加一个名为“data1 1”的新工作表) .
import pandas as pd
import openpyxl
path = 'test-out.xlsx'
book = openpyxl.load_workbook(path)
df1 = pd.DataFrame({'a': range(10), 'b': range(10)})
writer = pd.ExcelWriter(path, mode='a')
writer.book = book
df1.to_excel(writer, sheet_name='data1')
writer.save()
解决方案
将工作表传递给writer
with writer.sheets = dict((ws.title, ws) for ws in book.worksheets)
:
import pandas as pd
import openpyxl
path = 'test-out.xlsx'
book = openpyxl.load_workbook(path)
df1 = pd.DataFrame({'a': range(10), 'b': range(10)})
writer = pd.ExcelWriter(path, mode='a')
writer.book = book
writer.sheets = dict((ws.title, ws) for ws in book.worksheets)
df1.to_excel(writer, sheet_name='data1')
writer.save()
编辑:
好像你甚至不需要mode='w'
,writer = pd.ExcelWriter(path, mode='a')
仍在工作......
推荐阅读
- python - re_path 未解析的正则表达式 (\d[1,2])
- javascript - 如何在一个函数中进行 switch 和 if 语句
- node.js - Mongoose - 按特定顺序按字符串字段自定义排序
- javascript - Forward Ref 将当前值设为 null
- go - 不能在赋值中使用 &ingredients (type *[]foo.bar) 作为 type []*foo.bar
- ruby - Ruby 中的 @__instance__ 是什么?
- javascript - React Material UI 包装 TableRow
- maven - 在 Payara Micro 上部署 War 时找不到 Derby JDBC 驱动程序
- arrays - 从指向 C 中结构的指针数组中获取信息
- css - Bootstrap 4 网格的累积布局移位