我有不同的數據文件,需要根據日期列將它們合併在一起。如果我只有兩個文件,我可以使用df1.merge(df2, on='date')
,如果我嘗試使用三個文件,我使用df1.merge(df2.merge(df3, on='date'), on='date')
,但有多個文件要合併。Python:大熊貓合併多個數據框
數據幀有一個共同的列 - 「日期」,但沒有相同數量的行和列,我只需要每個數據幀通用的日期。
所以,我試圖編寫一個遞歸函數,返回一個數據幀與所有數據,但它沒有奏效。我應該如何合併多個數據框?
我嘗試過不同的方式,並得到像out of range
,keyerror 0/1/2/3
和can not merge DataFrame with instance of type <class 'NoneType'>
錯誤。
這是腳本:
dfs = [df1, df2, df3] # list of dataframes
def mergefiles(dfs, countfiles, i=0):
if i == (countfiles - 2): # it gets to the second to last and merges it with the last
return
dfm = dfs[i].merge(mergefiles(dfs[i+1], countfiles, i=i+1), on='date')
return dfm
print(mergefiles(dfs, len(dfs)))
一個例子: file_1:
May 19, 2017;1,200.00;0.1%
May 18, 2017;1,100.00;0.1%
May 17, 2017;1,000.00;0.1%
May 15,2017;900.00;0.2%
file_2:
May 20, 2017;2,200.00;1000000;0.2%
May 18, 2017;2,100.00;1590000;0.2%
May 16, 2017;2,000.00;1230000;0.2%
May 15,2017;1,900.00;1000000;0.2%
file_3:
May 21, 2017;3,200.00;2000000;0.2%
May 17, 2017;3,100.00;2590000;0.2%
May 16, 2017;3,000.00;2230000;0.2%
May 15,2017;2,900.00;2000000;0.2%
預期的合併結果:
May 15,2017;2,900.00;2000000;0.2%
你的預期結果是什麼? – zipa
@zipa,剛剛編輯帖子。合併結果是預期的結果。 –
查看答案。最容易理解和容易的一個。 – everestial007