Вы должны пройти через все значения и проверить наличие нулевых значений. Это может быть сделано путем обхода кадра данных по столбцам или по строкам. Какой из них лучше, зависит от данных (используйте эвристику).
Строка обхода:
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))).limit(1).collect().isEmpty
Обход по столбцам (опытным путем это должно быть быстрее , см. Комментарий Clock Slave):
import pyspark.sql.functions as f
contains_nulls = False
for c in df.columns:
if not df.where(f.col(c).isNull()).limit(1).collect().isEmpty:
contains_nulls = True
break
limit(1)
используется для остановки, когда найдено первое нулевое значение, и collect().isEmpty
, чтобы проверить, пустой ли фрейм данных.