我试图从pyspark数据帧获取具有空值的行 . 在pandas中,我可以在数据帧上使用isnull()来实现这一点
df = df[df.isnull().any(axis=1)]
但是在PySpark的情况下,当我在命令下运行它时会显示Attributeerror:
df.filter(df.isNull())
AttributeError:'DataFrame'对象没有属性'isNull' .
如何获取具有空值的行而不检查每列?
您可以使用 where , reduce 和理解来过滤行 . 例如,给定下一个数据框:
where
reduce
df = sc.parallelize([ (0.4, 0.3), (None, 0.11), (9.7, None), (None, None) ]).toDF(["A", "B"]) df.show() +----+----+ | A| B| +----+----+ | 0.4| 0.3| |null|0.11| | 9.7|null| |null|null| +----+----+
,过滤具有一些 null 值的行可以通过以下方式实现:
null
import pyspark.sql.functions as f from functools import reduce df.where(reduce(lambda x, y: x | y, (f.col(x).isNull() for x in df.columns))).show()
这使:
+----+----+ | A| B| +----+----+ |null|0.11| | 9.7|null| |null|null| +----+----+
在条件语句中,您必须指定是否有(或,|),all(和,&)等 .
1 回答
您可以使用
where
,reduce
和理解来过滤行 . 例如,给定下一个数据框:,过滤具有一些
null
值的行可以通过以下方式实现:这使:
在条件语句中,您必须指定是否有(或,|),all(和,&)等 .