📜  检查 null 所有列 pyspark - Python (1)

📅  最后修改于: 2023-12-03 15:26:43.543000             🧑  作者: Mango

检查所有列是否为null

在Pyspark中,我们有多种方法来检查DataFrame中的列是否包含null值。本文介绍了其中使用isNull()函数和结合for-loop循环来检查的方法。

1. 使用isNull()函数

isNull()函数返回一个BooleanType值,表示该列的每个元素是否为null值。我们可以使用该函数来检查列中是否包含null值,并使用pyspark.sql.functions.col()来指定需要检查的列名。

以下是一个示例DataFrame:

from pyspark.sql.functions import *
from pyspark.sql.types import *

df = spark.createDataFrame([(None, 4),(3, 5),(None, 6)], StructType([StructField("a", IntegerType()),StructField("b", IntegerType())]))
df.show()

输出:

+----+---+
|   a|  b|
+----+---+
|null|  4|
|   3|  5|
|null|  6|
+----+---+

我们可以使用isNull()函数和col()函数来检查DataFrame中的所有列是否包含空值:

for col_name in df.columns:
    null_count = df.filter(col(col_name).isNull()).count()
    print("{} has {} null values".format(col_name, null_count))

输出:

a has 2 null values
b has 0 null values
2. 结合for-loop循环

我们可以使用for-loop循环遍历每个列,并使用isNull()函数来检查该列是否包含null值。以下是一个演示代码:

for col_name in df.columns:
    null_count = df.filter(df[col_name].isNull()).count()
    print("{} has {} null values".format(col_name, null_count))

输出:

a has 2 null values
b has 0 null values
总结

使用isNull()函数和for-loop循环是检查Pyspark DataFrame中所有列是否包含null值的两种有效方法。这些方法都很容易实现并且可以适用于数据集较大的情况。