簡體   English   中英

從 pandas 到一張 excel 工作表的多個數據幀,而不用 python 刪除其他工作表

[英]multiple dataframes from pandas to one excel sheet without deleting other sheets with python

我有 2 個 dfs,我想導出到現有的 excel 文件,該文件已經有三張紙。 兩個 dfs 應該在工作表“Sheet1”(新工作表)中

df = pd.read_excel("Data Set Finished.xlsx", sheet_name="Details")
df2 = df.sum(axis=1)

writer = pd.ExcelWriter('Data Set Finished.xlsx', engine='openpyxl', mode ="a")


df.to_excel(writer, sheet_name='Sheet1', index=False) 
df2.to_excel(writer, sheet_name='Sheet1', startrow= 1,startcol=12, index=False, header=False)

但我收到此錯誤:工作表“Sheet1”已經存在,並且 if_sheet_exists 設置為“錯誤”。 我嘗試了 xlsxwriter 而不是 openpyxl,但這只是刪除了其他工作表,顯然 xlsxwriter 沒有 append 模式。 我怎樣才能解決這個問題?

我是xlwings的忠實粉絲,它是 anaconda 發行版的一部分。 這允許您與 EXCEL 進行交互交互,這對於查看dataframes非常方便(例如xl.view(df) )。 它還允許您將 position output 精確到您想要的位置,並且您可以根據需要格式化單元格(例如,使標題加粗和不同的顏色)。

您可以嘗試這樣的事情,其中文件應該引用現有的工作簿(包括文件路徑)。 在這里,我假設Sheet1已經存在於 excel 工作簿中。 如果不是這種情況,則通過wb.sheets.add()添加工作表。

import numpy as np
import pandas as pd
import xlwings as xl

df1 = pd.DataFrame({
    'date':pd.date_range(start='1/1/1990', periods=10, freq='Q'),
    'a': np.random.choice(range(100),10),
    'b': np.random.choice(range(100),10),
})

df2 = pd.DataFrame({
    'date':pd.date_range(start='1/1/2000', periods=10, freq='Q'),
    'c': np.random.choice(range(100),10),
    'd': np.random.choice(range(100),10),
})

df3 = pd.DataFrame({
    'date':pd.date_range(start='1/1/2010', periods=10, freq='Q'),
    'e': np.random.choice(range(100),10),
    'f': np.random.choice(range(100),10),
})


file = 'C:/Users/BRB/Book1.xlsx'

wb = xl.Book(file)
ws = wb.sheets('Sheet1')

ws.range('A1').value = df1
ws.range('E1').value = df2
ws.range('A14').value = df3

wb.save()
wb.close()

如果你想抑制索引,只需包含選項options(index=False)如下:

ws.range('A1').options(index=False).value = df1
ws.range('E1').options(index=False).value = df2
ws.range('A14').options(index=False).value = df3

暫無
暫無

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

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