2016-06-28 144 views
6

我目前擁有這段代碼。它完美的作品。使用python pandas將新的數據框添加到現有的excel表中

它通過循環Excel文件的文件夾中, 消除了前兩排, 然後保存出來爲單獨的Excel文件, 並且還節省了在循環作爲一個附加文件的文件。

當前附加文件每次運行代碼時都會覆蓋現有文件

我需要新的數據追加到的底部已經存在的Excel工作表('master_data.xlsx)

dfList = [] 
path = 'C:\\Test\\TestRawFile' 
newpath = 'C:\\Path\\To\\New\\Folder' 

for fn in os.listdir(path): 
    # Absolute file path 
    file = os.path.join(path, fn) 
    if os.path.isfile(file): 
    # Import the excel file and call it xlsx_file 
    xlsx_file = pd.ExcelFile(file) 
    # View the excel files sheet names 
    xlsx_file.sheet_names 
    # Load the xlsx files Data sheet as a dataframe 
    df = xlsx_file.parse('Sheet1',header= None) 
    df_NoHeader = df[2:] 
    data = df_NoHeader 
    # Save individual dataframe 
    data.to_excel(os.path.join(newpath, fn)) 

    dfList.append(data) 

appended_data = pd.concat(dfList) 
appended_data.to_excel(os.path.join(newpath, 'master_data.xlsx')) 

我以爲這是一個簡單的任務,但我想不會。 我想我需要將master_data.xlsx文件作爲數據框引入,然後將索引與新添加的數據進行匹配,然後將其保存。或者也許有一個更簡單的方法。任何幫助表示讚賞。

+0

是[that](http://stackoverflow.com/a/36450435/5741205)你在做什麼? – MaxU

+0

不,不是,我不是試圖保存新的工作表,只是想追加現有的工作表。 – brandog

回答

8

可以使用結合openpyxl發動機startrow參數:

In [48]: writer = pd.ExcelWriter('c:/temp/test.xlsx', engine='openpyxl') 

In [49]: df.to_excel(writer, index=False) 

In [50]: df.to_excel(writer, startrow=len(df)+2, index=False) 

In [51]: writer.save() 

C:/temp/test.xlsx:

enter image description here

PS你可能也想,如果你指定header=None不想重複列名...

UPDAT E:你可能也想檢查this solution

+0

嘿謝謝,我要用這個。 (我實際上並不是僅刪除2行數據,這只是大量格式化的佔位符。)我需要它將追加到現有工作表的底部,而不需要索引行。 – brandog

+0

@brandog,那麼你需要使用'header = None',你必須計算出excel文件中的當前行數,並像這樣使用它:'startrow = curr_count + 1' – MaxU

+0

OH,哎呀!我想念。是的,這完全回答了我的問題!謝謝 – brandog

相關問題