使用 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中文网其他相关文章!