我有不同的数据文件,需要根据日期列将它们合并在一起。如果我只有两个文件,我可以用df1.merge(df2, on='date'),如果我尝试使用三个文件,我会使用df1.merge(df2.merge(df3, on='date'), on='date'),但是有多个文件要合并。
dataframes有一个共同的列-“Date”,但是没有相同数量的行或列,我只需要每个dataframe共有的日期。
因此,我试图编写一个递归函数,它返回一个包含所有数据的dataframe,但是它没有工作。 代码如下:
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)))
一个例子:文件_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%
档案_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%
档案_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%