Python: los pandas combinan múltiples marcos de datos

Tengo diferentes marcos de datos y necesito fusionarlos en función de la columna de fecha. Si solo tuviera dos marcos de datos, podría usardf1.merge(df2, on='date'), para hacerlo con tres marcos de datos, usodf1.merge(df2.merge(df3, on='date'), on='date'), sin embargo, se vuelve realmente complejo e ilegible hacerlo con múltiples marcos de datos.

Todos los marcos de datos tienen una columna en común:date, pero no tienen el mismo número de filas ni columnas y solo necesito esas filas en las que cada fecha es común a cada marco de datos.

Entonces, estoy tratando de escribir una función de recursión que devuelva un marco de datos con todos los datos, pero no funcionó. ¿Cómo debo combinar múltiples marcos de datos entonces?

Intenté diferentes maneras y obtuve errores comoout of range, keyerror 0/1/2/3 ycan not merge DataFrame with instance of type <class 'NoneType'>.

Este es el guión que escribí:

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)))

Un ejemplo: df_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;1,901.00;0.1%

df_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;2,902.00;1000000;0.2%

df_3:

May 21, 2017;3,200.00;2000000;0.3%
May 17, 2017;3,100.00;2590000;0.3%
May 16, 2017;3,000.00;2230000;0.3%
May 15, 2017;3,903.00;2000000;0.3%

Resultado de fusión esperado:

May 15, 2017;  1,901.00;0.1%;  2,902.00;1000000;0.2%;   3,903.00;2000000;0.3%   

Respuestas a la pregunta(6)

Su respuesta a la pregunta