簡體   English   中英

無法將Pandas Dataframe附加到現有的Excel工作表

[英]unable to append pandas Dataframe to existing excel sheet

我對Python / Pandas很陌生。 我有一種情況,我必須每周用新數據更新一個現有工作表。 這些“新”數據基本上是每周都會生成的原始csv文件中的經過處理的數據,我已經編寫了python代碼來生成“新”數據,該數據基本上就是我代碼中的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”,而不是將數據框寫入現有的工作表“ Latency”

非常感謝您的幫助。

謝謝法赫姆

默認情況下,實例化ExcelWriter時,它將假定沒有工作表的新Empty Workbook。

因此,當您嘗試將數據寫入“延遲”時,它將創建一個新的空白工作表。 另外, openpxyl庫在寫入“避免重復名稱”之前執行檢查(請參閱openpxyl docs:第18行 ),它以數字方式遞增工作表名稱以寫入“ Latency1”。

要解決此問題,請在創建writer之后將現有的工作表復制到ExcelWriter.sheets屬性中。 像這樣:

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

暫無
暫無

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

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