欢迎访问宙启技术站
智能推送

pyspark.sql中如何对DataFrame进行数据过滤和筛选

发布时间:2023-12-18 23:41:30

在pyspark.sql中,可以使用DataFrame的filter()方法对数据进行过滤和筛选。

DataFrame的filter()方法接受一个表达式,该表达式用于指定过滤条件。表达式可以使用DataFrame中的任意列,并且可以使用多个逻辑运算符(例如,与、或、非)。

以下是使用filter()方法进行数据过滤和筛选的示例:

首先,使用pyspark.sql中的SparkSession创建一个DataFrame对象:

from pyspark.sql import SparkSession

spark = SparkSession.builder.getOrCreate()

data = [("Alice", 25), ("Bob", 30), ("Charlie", 35), ("Dave", 40)]
df = spark.createDataFrame(data, ["Name", "Age"])

现在,我们有一个包含姓名和年龄的DataFrame。我们可以使用filter()方法根据条件筛选数据。例如,筛选出年龄大于30的人:

filtered_df = df.filter(df.Age > 30)
filtered_df.show()

输出结果为:

+-------+---+
|   Name|Age|
+-------+---+
|Charlie| 35|
|   Dave| 40|
+-------+---+

我们还可以使用多个条件组合进行过滤。例如,筛选出年龄大于30且姓名以字母'C'开头的人:

filtered_df = df.filter((df.Age > 30) & df.Name.startswith("C"))
filtered_df.show()

输出结果为:

+-------+---+
|   Name|Age|
+-------+---+
|Charlie| 35|
+-------+---+

除了使用>、<等比较运算符之外,还可以使用其他表达式函数进行过滤。例如,我们可以使用isNull()函数筛选出年龄为空的人:

filtered_df = df.filter(df.Age.isNull())
filtered_df.show()

输出结果为:

+----+----+
|Name| Age|
+----+----+
+----+----+

可以看到,没有年龄为空的人的记录。

除了filter()方法,还可以使用where()方法进行数据过滤和筛选。它们的用法基本相同,只是语义上略有不同。示例代码如下:

filtered_df = df.where(df.Age > 30)
filtered_df.show()

输出结果和前面的示例相同。

综上所述,可以使用pyspark.sql中的filter()方法对DataFrame进行数据过滤和筛选。可以使用表达式指定过滤条件,可以使用多个逻辑运算符进行条件组合,还可以使用其他表达式函数进行数据过滤。