如果有空白 DataFrame 则 reduce() 合并

reduce() to merge if there are blank DataFrame

我想使用reduce()功能合并数据。

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

然而,有时某些数据帧 df1df8 可能是空白的(但至少有一个数据帧不是空白)。
我不想检测是哪一个。

比如这次df1df7都是空的,只有df8是非空的。下次 df1df2df5 非空。

我应该怎么做?

您可以重写函数以使用 属性 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)