2015-05-22 86 views
1

引用How to write to an existing excel file without overwriting data?我嘗試下面的代碼:熊貓到Excel:保留現有數據

book = load_workbook('output.xlsx') 
writer = pd.ExcelWriter('output.xlsx') 
writer.book = book 
writer.sheets = dict((ws.title, ws) for ws in book.worksheets) 
Output.to_excel('output.xlsx', "Main", index=True, header=False, startcol = pickupcol) 
writer.save() 

這是一個循環的一部分,但我發現to_excel只能在同一時間寫256列,所以我決定使用變量pickupcol,所以我可以一次添加一個部分。不幸的是,它刪除了以前的數據與空白單元格。

想法/建議? 謝謝!

+0

爲什麼不寫信給csv然後用Excel打開? – canyon289

+0

您是否曾嘗試在每次迭代中打印'pickcol'? – farhawa

+0

我建議創建一個新的excel工作表,並通過'ID'將它與舊的工作表合併在一起,方法是使用https://gist.github.com/anderser/1276531 – farhawa

回答

2

startcol引用轉儲數據幀的Excel文件中該部分的左上角單元格的列號。 要寫入excel的數據幀的列的選擇由to_excel函數的參數columns完成。 以下代碼適用於我。它不會覆蓋以前的數據

In [57]: import pandas as pd 

In [58]: import numpy as np 

In [59]: df = pd.DataFrame(np.random.randn(5,300)) 

In [60]: writer = pd.ExcelWriter("output.xlsx") 

In [61]: df.to_excel(writer,columns=range(0,255)) 

In [62]: df.to_excel(writer,columns=range(256,300),startcol=257,index='False') 

In [63]: writer.save() 

順便說一句,我能一氣呵成寫出所有列,沒有256列的任何限制。我正在使用熊貓版'0.15.2'

+0

謝謝@ user1319128。當我使用你的代碼時,我得到了和你一樣的結果。在我的代碼/數據中,一定是不對的。 – As3adTintin

+0

由於某種原因,我從週末回來,現在它的工作方式與您的一樣!現在我只是有這個問題: http://stackoverflow.com/questions/30404791/pandas-excel-export-columns-out-of-order?noredirect=1#comment48925456_30404791 – As3adTintin