如何使用reduce()合并可能存在空白DataFrame的多份数据集?
解决方案
核心逻辑是先过滤待合并列表中的空DataFrame,再执行reduce合并,无需手动识别空df:
- 用pandas内置的
df.empty属性即可快速判断DataFrame是否为空 - reduce方法天然支持单元素输入:如果过滤后仅剩1个非空df,会直接返回该df,无需额外分支处理
调整后的完整代码如下:
import pandas as pd from functools import reduce # 把所有待合并的DataFrame统一放入列表 all_dfs = [df1, df2, df3, df4, df5, df6, df7, df8] # 过滤掉所有空DataFrame valid_dfs = [df for df in all_dfs if not df.empty] # 执行合并操作 final = reduce(lambda left, right: pd.merge(left, right, on='KEY', how="outer"), valid_dfs)
如果你的业务场景对“空df”有自定义判定规则(比如行数小于阈值就算无效),只需要修改过滤条件即可,示例:
# 示例:仅保留行数≥5的DataFrame参与合并 valid_dfs = [df for df in all_dfs if len(df) >=5]
内容的提问来源于stack exchange,提问作者Peter Chen
相关产品推荐
相关产品推荐

