将数据框附加到 excel with pandas

新手上路,请多包涵

我希望将数据框附加到 excel

此代码几乎可以按预期工作。虽然它不是每次都追加。我运行它并将数据框放入 excel 中。但是每次我运行它时它都不会追加。我还听说 openpyxl 是 cpu 密集型的,但没有听说过很多 解决方法

 import pandas
from openpyxl import load_workbook

book = load_workbook('C:\\OCC.xlsx')
writer = pandas.ExcelWriter('C:\\OCC.xlsx', engine='openpyxl')
writer.book = book
writer.sheets = dict((ws.title, ws) for ws in book.worksheets)

df1.to_excel(writer, index = False)

writer.save()

我希望每次运行时都附加数据,但这并没有发生。

数据输出看起来像原始数据:

 A   B   C
H   H   H

我想跑第二次

A   B    C
H   H    H
H   H    H

抱歉,如果这很明显,我是 python 的新手,我练习的示例没有按预期工作。

问题是 - 如何在每次运行时附加数据。我尝试更改为 xlsxwriter 但得到 AttributeError: 'Workbook' object has no attribute 'add_format'

原文由 user9079010 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 680
1 个回答

首先,这篇文章是解决方案的第一部分,您应该在其中指定 startrow=使用 python pandas 添加带有新数据框的现有 excel 表

您也可以考虑 header=False 。所以它应该是这样的:

 df1.to_excel(writer, startrow = 2,index = False, Header = False)

如果您希望它自动到达工作表的末尾并附加您的 df 然后使用:

 startrow = writer.sheets['Sheet1'].max_row

如果你想让它遍历工作簿中的所有工作表:

 for sheetname in writer.sheets:
    df1.to_excel(writer,sheet_name=sheetname, startrow=writer.sheets[sheetname].max_row, index = False,header= False)

顺便说一句:对于 writer.sheets 你可以使用字典理解(我认为它更干净,但这取决于你,它产生相同的输出):

 writer.sheets = {ws.title: ws for ws in book.worksheets}

所以完整的代码将是:

 import pandas
from openpyxl import load_workbook

book = load_workbook('test.xlsx')
writer = pandas.ExcelWriter('test.xlsx', engine='openpyxl')
writer.book = book
writer.sheets = {ws.title: ws for ws in book.worksheets}

for sheetname in writer.sheets:
    df1.to_excel(writer,sheet_name=sheetname, startrow=writer.sheets[sheetname].max_row, index = False,header= False)

writer.save()

原文由 Idan Richman 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题