Quiero usar la función reduce() para fusionar datos.

final = reduce(lambda left,right: pd.merge(left,right,on='KEY',how="outer"), [df1, df2, df3, df4, df5, df6, df7, df8])

Sin embargo, a veces algunos marcos de datos df1 a df8 pueden estar en blanco (pero hay al menos un marco de datos que no está en blanco).
Y no quiero detectar cuál.

Por ejemplo, esta vez df1 a df7 están en blanco y solo df8 no está en blanco. La próxima vez que df1, df2, df5 no estén en blanco.

¿Cómo debo hacerlo?

3
Peter Chen 11 may. 2021 a las 21:19

1 respuesta

La mejor respuesta

Puede reescribir su función para buscar marcos de datos en blanco utilizando la propiedad < fuerte> DataFrame.empty :

def my_merge(left,right):
    if left.empty: return right
    if right.empty: return left
    return pd.merge(left,right)

final = reduce(my_merge, list_of_dfs)
3
Ch3steR 11 may. 2021 a las 18:27