首页 >后端开发 >Python教程 >如何使用 Pandas 将数据追加到现有 Excel 文件而不覆盖?

如何使用 Pandas 将数据追加到现有 Excel 文件而不覆盖?

Mary-Kate Olsen
Mary-Kate Olsen原创
2024-12-27 09:37:10640浏览

How to Append Data to an Existing Excel File Using Pandas Without Overwriting?

使用 Pandas 写入现有 Excel 文件而不覆盖数据

使用 pandas 将新数据添加到现有 Excel 文件时,默认行为是让新数据覆盖任何现有内容。如果您想保留其他工作表上的现有数据,这可能会出现问题。

问题

考虑以下代码:

import pandas

writer = pandas.ExcelWriter('Masterfile.xlsx') 

data_filtered.to_excel(writer, "Main", cols=['Diff1', 'Diff2'])

writer.save()

执行此代码时,会将 data_filtered 中的数据添加到 Excel 文件 Masterfile.xlsx 中名为“Main”的新工作表中。但是,它还会删除文件中的所有其他工作表

解决方案

为了避免覆盖现有数据,您可以使用引擎= ExcelWriter 中的'openpyxl' 选项。这允许您访问底层的 openpyxl 对象,从而对流程进行更多控制。

以下是如何修改上述代码以附加到现有 Excel 文件而不覆盖:

import pandas
from openpyxl import load_workbook

book = load_workbook('Masterfile.xlsx')
writer = pandas.ExcelWriter('Masterfile.xlsx', engine='openpyxl') 
writer.book = book

## ExcelWriter for some reason uses writer.sheets to access the sheet.
## If you leave it empty it will not know that sheet Main is already there
## and will create a new sheet.

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

data_filtered.to_excel(writer, "Main", cols=['Diff1', 'Diff2'])

writer.save()

通过显式地将 writer.sheets 设置为现有工作表的字典,我们确保 ExcelWriter 知道现有工作表并且不会覆盖它们。

以上是如何使用 Pandas 将数据追加到现有 Excel 文件而不覆盖?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn