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