📜  PySpark DataFrame – 删除带有 NULL 或 None 值的行(1)

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

PySpark DataFrame – 删除带有 NULL 或 None 值的行

在 PySpark DataFrame 中,删除带有 NULL 或 None 值的行非常简单,可以使用 dropna() 函数实现该功能。这个函数非常强大,可以轻松地从 DataFrame 中删除包含指定类型的任何行。

准备工作

首先,我们需要使用以下代码创建一个简单的 PySpark DataFrame:

from pyspark.sql import SparkSession
from pyspark.sql.types import StructType, StructField, StringType, IntegerType

spark = SparkSession.builder.appName("Example").getOrCreate()

data = [(None, "John", 23), (30, "Lisa", None), (50, "Catherine", 27)]

schema = StructType([
    StructField("ID", IntegerType(), True),
    StructField("Name", StringType(), True),
    StructField("Age", IntegerType(), True)
])

df = spark.createDataFrame(data, schema=schema)

df.show()

这将输出以下内容:

+----+---------+----+
|  ID|     Name| Age|
+----+---------+----+
|null|     John|  23|
|  30|     Lisa|null|
|  50|Catherine|  27|
+----+---------+----+
使用 dropna() 函数删除 NULL 或 None 值的行

要删除带有 NULL 或 None 值的行,请使用 dropna() 函数,并将 how 参数设置为 'any'

df = df.dropna(how='any')

df.show()

这将从 DataFrame 中删除带有 NULL 或 None 值的行,并输出以下内容:

+----+---------+---+
|  ID|     Name|Age|
+----+---------+---+
|  50|Catherine| 27|
+----+---------+---+

上述代码中,我们使用了参数 how = 'any',这表示删除包含任何 NULL 或 None 值的行,可以使用 how = 'all' 来指定只删除完全包含 NULL 或 None 值的行。

总结

在 PySpark DataFrame 中,使用 dropna() 函数删除带有 NULL 或 None 值的行非常简单。只需要一行代码即可将这些行从 DataFrame 中删除。