PySpark如何过滤DataFrame中所有值均为NULL的行?
过滤Spark DataFrame中所有字段均为NULL的行
方案1:筛选出所有字段为NULL的行
如果需要保留所有字段都为NULL的行,可以借助functools.reduce批量组合AND条件:
from pyspark.sql.functions import col from functools import reduce # 生成每个列的isNull条件,并用reduce将所有条件以AND逻辑组合 all_null_condition = reduce(lambda cond_a, cond_b: cond_a & cond_b, [col(col_name).isNull() for col_name in df.columns]) # 筛选出目标行 all_null_rows = df.filter(all_null_condition)
方案2:删除所有字段为NULL的行(更优雅)
如果需求是过滤掉这类全NULL行,Spark提供了原生的简洁API,直接调用na.drop()并指定how='all'即可:
# 删除所有列值均为NULL的行 cleaned_df = df.na.drop(how="all")
这个方法是Spark专为处理全NULL行场景设计的,无需手动拼接条件,代码简洁且可读性强,是最优的优雅解决方案。
内容的提问来源于stack exchange,提问作者the_economist
相关产品推荐
相关产品推荐

