如何在多列使用非条件过滤?排除指定记录遇空DataFrame问题
问题解决
你之前的过滤代码得到空DataFrame的原因:
- Spark中逻辑与需用
&&,而非&(&是位运算符); - 你的条件要求
AGE和PHONE都不为空,但数据集里除G3外的行可能存在这两列有空值/空格的情况,导致全部被过滤掉。
- Spark中逻辑与需用
针对你「保留除name为G3之外所有数据」的需求,正确代码如下:
from pyspark.sql.functions import col, trim # 仅排除NAME为G3的行,AGE/PHONE是否为空都保留 df = df.filter(col("NAME") != "G3")
- 如果同时需要保留
AGE和PHONE非空的行(修正原条件的运算符问题),代码调整为:
df = df.filter((col("NAME") != "G3") && (trim(col("AGE")) != "") && (trim(col("PHONE")) != ""))
内容的提问来源于stack exchange,提问作者Santosh Pandey
相关产品推荐
相关产品推荐

