簡體   English   中英

如何將多個 Pandas 數據幀寫入 Excel? (當前方法 Corrupts.xlsx)

[英]How to Write Multiple Pandas Dataframes to Excel? (Current Method Corrupts .xlsx)

我正在嘗試將兩個 Pandas 數據幀寫入同一工作簿中的兩個不同工作表。

我正在使用 openpyxl 3.0.7 和 Pandas 1.2.3。

我的工作簿的名稱是“test.xlsx”,里面有兩個選項卡:“Tab1”和“Tab2”。

這是我正在使用的代碼:

import pandas as pd
from openpyxl import load_workbook

def export(df1, df2):
    excelBook = load_workbook('test.xlsx')
    with pd.ExcelWriter('test.xlsx', engine='openpyxl') as writer:
        writer.book = excelBook
        writer.sheets = dict((ws.title, ws) for ws in excelBook.worksheets)
        df1.to_excel(writer, sheet_name = 'Tab1', index = False)
        df2.to_excel(writer, sheet_name = 'Tab2', index = False)
        writer.save()

df1 = pd.DataFrame(data = [1,2,3], columns = ['Numbers1'])
df2 = pd.DataFrame(data = [4,5,6], columns = ['Numbers2'])

export(df1, df2)

運行上述代碼時,它執行沒有錯誤。 但是,當我 go 打開 Excel 中的 test.xlsx 時,我收到一條警告,告訴我:“我們發現 'test.xlsx' 中的某些內容有問題。您希望我們盡可能多地恢復嗎?如果您信任此工作簿的來源,請單擊是。”

當我單擊“是”時,Excel 修復了該問題,並且我的兩個數據框被填充在其正確的選項卡上。 然后我可以將文件另存為新文件名,並且文件不再損壞。

任何幫助深表感謝!

嘗試使用一個引擎一次打開/寫入:

import pandas as pd

def export(df1, df2):

    with pd.ExcelWriter('test.xlsx', engine='openpyxl') as writer:
        df1.to_excel(writer, sheet_name = 'Tab1', index = False)
        df2.to_excel(writer, sheet_name = 'Tab2', index = False)
        writer.save()

這個問題的解決方案是從腳本中刪除 writer.save()。 在 Pandas 版本 1.1.5 及更早版本中,使用此 writer.save() 不會導致文件損壞。 但是,在 1.2.0 及更高版本中,這確實會導致文件損壞。 調用 pd.ExcelWriter 后,官方 pandas 文檔未顯示使用 writer.save。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM