簡體   English   中英

使用python中的pandas將數據寫入現有Excel

[英]Writing Data to Existing Excel using pandas in python

目前,我正在將兩個數據幀導出到單個excel文件中。 每個數據框放置在單獨的頁面上。 我目前正在運行模擬,每個數據框需要2,000列(每張紙上需要2,000列)。 每次我運行代碼時,它都會創建一個新的excel文件(本來是我想要的)。 但是為了節省時間,我想知道是否可以通過添加新的數據列而不覆蓋現有數據來寫入現有的excel文件?

######### This is my original code ################
import pandas as pd
from pandas import ExcelWriter
from pandas import ExcelFile
from pandas import DataFrame
from openpyxl import Workbook

df1 = pd.DataFrame(returns1)
df2 = pd.DataFrame(returns2)


x1 = 'mypath/ '
x2 = datetime.datetime.now().strftime('%B %d, %Y %H-%M-%S')
x3 = '.xlsx'
destination = x1 + x2 + x3
writer = pd.ExcelWriter(destination, engine='xlsxwriter')

df1.to_excel(writer, sheet_name= 'Returns 1', index=False)
df2.to_excel(writer, sheet_name= 'Returns 2', index=False)
writer.save()
### 更新

代碼有效! 謝謝大家的幫助,尤其是@zhqiat。 下面是最終代碼。 正是我想要的。 我希望這會幫助遇到我同樣問題的其他人。

 df1 = pd.DataFrame(returns1) df2 = pd.DataFrame(returns2) book = load_workbook('mypath.xlsx') writer = pd.ExcelWriter('mypath.xlsx', engine='openpyxl') writer.book = book writer.sheets = {ws.title: ws for ws in book.worksheets} df1.to_excel(writer, sheet_name='Returns1', startrow=0, startcol=writer.sheets['Returns1'].max_column, index=False) df2.to_excel(writer, sheet_name='Returns2', startrow=0, startcol=writer.sheets['Returns2'].max_column, index=False) This is what I wanted. A 100 120 119 225 Second Time AB 100 98 120 100 119 105 125 111 Third Time ABC 100 98 106 120 100 99 119 105 101 125 111 89 

等等...

不幸的是,追加到excel並不是熊貓的完整功能。

對於被黑客入侵的解決方案,您可以使用excel writer對象將工作表縫合在一起。

聽起來您想為所有新數據添加列(而不是行),所以您可能需要使用以下方法確定電子表格的寬度:

maxcol = writer.sheets['SheetName'].max_column

**編輯,我不好,它是max_column而不是max_col **

有關如何添加行的完整代碼,請參閱2017年先前問題

讀取Excel文件並將其存儲為數據框,然后附加系列並寫入相同的Excel工作表

# read wherever you have stored the file

prev_df = pd.read_excel('path to file.xlsx')

# convert new series to df
new_df =  pd.DataFrame(var1)

# join
df_to_write = prev_df.join(new_df)

# write to excel

暫無
暫無

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

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