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

使用when()函数在PySpark中进行条件判断

发布时间:2024-01-18 19:06:31

在PySpark中,when()函数用于根据条件进行条件判断。它可以在DataFrame中根据给定的条件表达式进行条件计算,并返回相应的结果。下面是一个详细的使用例子:

首先,我们创建一个包含一些示例数据的DataFrame:

from pyspark.sql import SparkSession

# 创建SparkSession
spark = SparkSession.builder.getOrCreate()

# 创建示例数据
data = [("Alice", 25), ("Bob", 30), ("Charlie", 35), ("Dave", 40)]
df = spark.createDataFrame(data, ["Name", "Age"])
df.show()

输出:

+-------+---+
|   Name|Age|
+-------+---+
|  Alice| 25|
|    Bob| 30|
|Charlie| 35|
|   Dave| 40|
+-------+---+

现在,我们可以使用when()函数进行条件判断。例如,我们想要创建一个新的列"Category",根据"Age"列的值来判断年龄段。如果年龄小于30岁,将其分类为"Young",如果年龄大于等于30岁,将其分类为"Adult"。

from pyspark.sql.functions import when

# 使用when()函数进行条件判断
df = df.withColumn("Category", when(df["Age"] < 30, "Young").otherwise("Adult"))
df.show()

输出:

+-------+---+--------+
|   Name|Age|Category|
+-------+---+--------+
|  Alice| 25|   Young|
|    Bob| 30|   Adult|
|Charlie| 35|   Adult|
|   Dave| 40|   Adult|
+-------+---+--------+

在上面的例子中,我们使用when()函数创建了一个新的列"Category"。当"Age"列的值小于30时,将"Category"列的值设置为"Young",否则设置为"Adult"。

此外,我们还可以通过链式使用多个when()函数和otherwise()函数,实现更复杂的条件判断。例如,我们想要创建一个新的列"Status",根据"Age"列的值来判断人的状态。如果年龄小于25岁,将其分类为"Youth";如果年龄在25岁和35岁之间,将其分类为"Adult";否则分类为"Elder"。

# 使用多个when()函数进行复杂的条件判断
df = df.withColumn("Status", when(df["Age"] < 25, "Youth")
                      .when(df["Age"].between(25, 35), "Adult")
                      .otherwise("Elder"))
df.show()

输出:

+-------+---+--------+------+
|   Name|Age|Category|Status|
+-------+---+--------+------+
|  Alice| 25|   Young| Adult|
|    Bob| 30|   Adult| Adult|
|Charlie| 35|   Adult| Adult|
|   Dave| 40|   Adult| Elder|
+-------+---+--------+------+

在上面的例子中,我们使用了两个when()函数,以及otherwise()函数。首先,当"Age"列的值小于25时,将"Status"列的值设置为"Youth";然后,当"Age"列的值在25岁和35岁之间时,将"Status"列的值设置为"Adult";最后,使用otherwise()函数,将"Status"列的值设置为"Elder"。

总结一下,在PySpark中,when()函数可以用于在DataFrame中进行条件判断,并根据条件表达式返回相应的结果。我们可以使用单个when()函数,也可以链式使用多个when()函数和otherwise()函数来实现更复杂的条件判断。