python - 无法将 pandas Dataframe 附加到现有 Excel 工作表

标签 python excel pandas dataframe openpyxl

我对 Python/Pandas 很陌生。我遇到的情况是,我必须每周用新数据更新现有工作表。这个"new"数据基本上是来自每周生成的原始 csv 文件的处理数据,我已经编写了一个 python 代码来生成这个"new"数据,它基本上是我的代码中的 pandas Dataframe。现在我想将此 Dataframe 对象附加到 Excel 工作簿中的现有工作表中。我已经使用下面的代码将 DF 写入 XL 工作簿到特定的工作表中。

workbook_master=openpyxl.load_workbook('C:\Claro\Pre-Sales\E2E Optimization\Transport\Transport Network Dashboard.xlsx')

writer=pandas.ExcelWriter('C:\Claro\Pre-Sales\E2E Optimization\Transport\Transport Network Dashboard.xlsx',engine='openpyxl',mode='a')

df_latency.to_excel(writer,sheet_name='Latency',startrow=workbook_master['Latency'].max_row,startcol=0,header=False,index=False)

writer.save()
writer.close()

现在的问题是,当我运行代码并打开 Excel 文件时,代码不是将数据帧写入现有工作表“Latency”,而是创建一个新工作表“Latency1”并将数据帧写入其中。数据框的内容和位置是正确的,但我不明白为什么代码创建一个新工作表“Latency1”,而不是将数据框写入现有工作表“延迟”

非常感谢这里的任何帮助。

谢谢 法希姆

最佳答案

默认情况下,实例化 ExcelWriter 时,它会假定一个没有工作表的新空工作簿。

因此,当您尝试将数据写入“延迟”时,它会创建一个新的空白工作表。此外,openpxyl 库在写入“避免重复名称”之前会执行检查(请参阅 openpxyl docs : line 18 ),这会以数字方式递增工作表名称以写入“Latency1”。

要解决此问题,请在创建 writer 后将现有工作表复制到 ExcelWriter.sheets 属性中。 像这样:

writer.sheets = dict((ws.title, ws) for ws in workbook_master.worksheets)

关于python - 无法将 pandas Dataframe 附加到现有 Excel 工作表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57932758/

相关文章:

vba - 文本比较在 VBA 中无法正常工作

python - 使用行分隔符转换数据框

python - 将行写入新的数据帧

excel - VBA从填充形状中删除图像

python - 如何从 python 客户端指定 Twilio Whatsapp 模板?

regex - 如何通过正则表达式分隔的拆分函数将VBA中的字符串拆分为数组

python - Pandas :计算两个数据帧之间的总百分比差异

python - 消除部分匹配的 Pandas 数据框行

python - 在 2 个 python 列表中查找具有共同属性的对象的有效方法

python - Pandas iterrows 只给出最后一行的结果