📌  相关文章
📜  使用 None 或 Null 值过滤 PySpark DataFrame 列(1)

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

使用 None 或 Null 值过滤 PySpark DataFrame 列

在 PySpark 中,DataFrame 是一种强大的数据结构,它类似于关系型数据库的表格,但是它可以在分布式环境下进行操作。由于数据的复杂性和数据规模的增加,过滤 DataFrame 列成为了必要的操作之一。而有时候,我们需要过滤掉一些包含 None 或 Null 值的列,本文将介绍如何使用 PySpark 过滤包含 None 或 Null 值的 DataFrame 列。

创建 DataFrame

为了方便后续操作,我们首先需要创建一个包含 None 或 Null 值的 DataFrame。这里我们创建一个表格,其中一个列包含 None 或 Null 值:

from pyspark.sql import SparkSession
from pyspark.sql.functions import col

# 创建 SparkSession 对象
spark = SparkSession.builder.appName('example').getOrCreate()

# 定义数据
data = [('Alice', None), ('Bob', 20), ('Cathy', 25), ('David', None)]

# 创建 DataFrame
df = spark.createDataFrame(data, ['Name', 'Age'])
df.show()

结果如下:

+-----+----+
| Name| Age|
+-----+----+
|Alice|null|
|  Bob|  20|
|Cathy|  25|
|David|null|
+-----+----+
使用 isNull() 方法过滤 DataFrame 列

现在我们需要过滤掉包含 None 或 Null 值的列。首先,我们可以使用 isNull() 方法来检查一个列是否为 None 或 Null 值。如果是,则返回 True,否则返回 False。在 PySpark 中,我们可以使用 col() 函数来指定要操作的列。具体方法如下:

df.filter(col('Age').isNull()).show()

结果如下:

+-----+----+
| Name| Age|
+-----+----+
|Alice|null|
|David|null|
+-----+----+

这里我们过滤掉了所有包含 None 或 Null 值的 Age 列。

使用 isNotNull() 方法过滤 DataFrame 列

如果我们希望保留非 None 或 Null 值的列,我们可以使用 isNotNull() 方法。这个方法的用法和 isNull() 方法类似,只需将其替换即可。具体方法如下:

df.filter(col('Age').isNotNull()).show()

结果如下:

+-----+---+
| Name|Age|
+-----+---+
|  Bob| 20|
|Cathy| 25|
+-----+---+

这里我们保留了所有非 None 或 Null 值的 Age 列。

结论

通过本文,我们学习了如何使用 PySpark 过滤 DataFrame 列中包含 None 或 Null 值的行。我们介绍了 isNull()isNotNull() 两种方法。这些方法对于数据清理和数据分析非常有用。