使用when()函数在PySpark中进行条件判断
在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()函数来实现更复杂的条件判断。
