[英]Using pandas, how to only read one sheet from Excel workbook without loading any of the other sheets?
[英]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.