我有不同的数据帧,需要根据日期列将它们合并在一起.如果我只有两个数据帧,我可以使用df1.merge(df2, on='date')它来做三个数据帧df1.merge(df2.merge(df3, on='date'), on='date'),但是,使用多个数据帧,它变得非常复杂和难以理解.
所有数据帧都有一个共同的列 - date但它们没有相同数量的行或列,我只需要每个日期对每个数据帧都是通用的那些行.
所以,我正在尝试编写一个递归函数,它返回一个包含所有数据的数据帧,但它不起作用.那么我应该如何合并多个数据帧呢?
我试图diferent的方式,得到了类似的错误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)))
Run Code Online (Sandbox Code Playgroud)
一个例子:df_1:
May 19, …Run Code Online (Sandbox Code Playgroud)