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

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()函数进行条件嵌套可以实现更高级的条件表达式。