PySpark中的when()函数详解
发布时间:2024-01-18 19:05:47
PySpark中的when()函数用于给DataFrame或Dataset添加一个条件表达式,并根据表达式的结果返回相应的值。它可以用于在数据预处理和转换期间基于条件进行数据操作。
when()函数的基本语法如下:
when(condition, value)
其中,condition是一个布尔表达式,value是一个表达式,用于在条件成立时返回的值。
下面是一个使用when()函数的例子:
from pyspark.sql import SparkSession
from pyspark.sql.functions import col, when
# 初始化SparkSession
spark = SparkSession.builder \
.appName("When Function Example") \
.getOrCreate()
# 创建一个示例DataFrame
data = [("Alice", 20), ("Bob", 25), ("Charlie", 18)]
df = spark.createDataFrame(data, ["name", "age"])
# 使用when()函数根据条件给age列添加一个新的标签列
df = df.withColumn("label", when(col("age") < 20, "Young")
.when(col("age") > 25, "Old")
.otherwise("Adult"))
# 显示DataFrame
df.show()
输出结果如下:
+-------+---+------+ | name|age| label| +-------+---+------+ | Alice| 20| Adult| | Bob| 25| Adult| |Charlie| 18| Young| +-------+---+------+
在上面的例子中,我们通过when()函数根据“age”列的值添加一个新的标签列。当“age”小于20时,标签列为“Young”,当“age”大于25时,标签列为“Old”,否则,标签列为“Adult”。
除了单个条件外,我们还可以使用多个when()函数实现多个条件的嵌套。下面是一个多条件的示例:
df = df.withColumn("label", when(col("age") < 20, "Young")
.when((col("age") >= 20) & (col("age") <= 25), "Adult")
.when(col("age") > 25, "Old")
.otherwise("Unknown"))
在此示例中,当“age”小于20时,标签列为“Young”,当“age”在20到25之间(包括20和25)时,标签列为“Adult”,当“age”大于25时,标签列为“Old”,否则,标签列为“Unknown”。
总结:
- PySpark中的when()函数用于给DataFrame或Dataset添加一个条件表达式,并根据表达式的结果返回相应的值。
- when()函数的条件表达式可以嵌套,允许多个条件进行判断。
- 使用otherwise()函数可以设置默认值,当所有条件都不满足时返回。
- 添加的条件列将作为DataFrame的新列存在,可通过withColumn()函数将其添加到DataFrame中。
- 当条件较多或复杂时,使用多个when()函数进行条件嵌套可以实现更高级的条件表达式。
