📅  最后修改于: 2023-12-03 15:06:49.106000             🧑  作者: Mango
在 PySpark 中,DataFrame 是一种强大的数据结构,它类似于关系型数据库的表格,但是它可以在分布式环境下进行操作。由于数据的复杂性和数据规模的增加,过滤 DataFrame 列成为了必要的操作之一。而有时候,我们需要过滤掉一些包含 None 或 Null 值的列,本文将介绍如何使用 PySpark 过滤包含 None 或 Null 值的 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()
两种方法。这些方法对于数据清理和数据分析非常有用。