2015-12-24 82 views
1

我有兩個excel文件。參與者完成實驗,結果應該放入另一張表格的兩個excel文件中。這應該發生在每個新的參與者身上。圖紙名稱爲001,002,...取決於參與者的編號。但excelfiles只是不斷被覆蓋。將張添加到現有的帶有熊貓的excelfile中

我正在使用的代碼:

import pandas 
allmeans = numpy.array([[(meanreactiontimeinputsusercongruentpositief),(meanreactiontimeinputsusercongruentnegatief),(meanreactiontimeinputsuserincongruentposneg), (meanreactiontimeinputsuserincongruentnegpos), (meanvalueinputusercongruentpositief), (meanvalueinputusercongruentnegatief), (meanreactiontimeinputsuserincongruentposneg), (meanvalueinputuserincongruentnegpos)]]) 
to_write = pandas.DataFrame({'Age': age, 'Gender': gender, 'MeanReactionTimeCongruentPos': allmeans[:,0], 'MeanReactionTimeCongruentNeg': allmeans[:,1], 'MeanReactionTimeIncongruentPosNeg': allmeans[:,2], 'MeanReactionTimeIncongruentNegPos': allmeans[:,3], 'MeanValueInputCongruentPos': allmeans[:,4], 'MeanValueInputCongruentNeg': allmeans[:,5], 'MeanValueInputIncongruentPosNeg': allmeans[:,6], 'MeanValueIncongruentNegPos': allmeans[:,7]}) 
to_write.to_excel('MeansOfUsers.xlsx',sheet_name = str(participantnumber), index = False, startrow = 3, startcol = 2) 

allresults= numpy.array([listofrandomizedconditions,inputsuser,reactiontimesuser]) 
to_write2 = pandas.DataFrame({'Conditions': allresults[0,:], 'Inputs': allresults[1,:], 'Reactionstimes': allresults[2,:]}) 
to_write2.to_excel('ResultsofUsers.xlsx',sheet_name = str(participantnumber), index = False, startrow=3,startcol=2) 

所以basicly它始終會的2個excelfiles用正確的表名稱,但除了增加一個新的板材,現有薄片剛剛得到由新的片覆蓋。我如何解決這個問題?

編輯:我發現使用openpyxl的工作簿,我可以使用create_sheet加載後在工作簿中獲取新工作表,但他們我卡在我如何編輯與pandas.DataFrame完全工作表創建。

+0

請問以下鏈接是否回答您的問題? http://stackoverflow.com/questions/20219254/how-to-write-to-an-existing-excel-file-without-overwriting-data-using-pandas' – Dataman

回答

2

您應該創建一個ExcelWriter對象並使用它來保存數據幀。您需要調用其save()方法才能實際保存excel文件。

import pandas as pd 

ew = pd.ExcelWriter('a.xlsx') 
pd.DataFrame({'a':[1,2]}).to_excel(ew, sheet_name='a') 
pd.DataFrame({'a':[1,2]}).to_excel(ew, sheet_name='b') 
ew.save() # don't forget to call save() or the excel file won't be created 
+0

我測試了它,但它仍然沒有創建de excelfile中的新工作表,只是覆蓋現有工作表;可能是因爲每次實驗運行時,整個代碼都會運行,並會創建一個新的excelfile,該excelfile與已存在的excelfile具有相同的名稱。這會被一個新的excel文件覆蓋。如果我可以創建一個ew,運行X次實驗並添加X個數據幀到ew,然後保存ew,你給我的東西將會有所幫助。但是,實驗運行X次,每次製作一個ew和一個ew2(因爲我需要2個excelfiles)。我應該打開(或創建)一個名爲'x'的excelfile並添加一個表。 – Caeline