📜  pyspark 当否则有多个条件 - Python (1)

📅  最后修改于: 2023-12-03 15:33:55.776000             🧑  作者: Mango

pyspark 当否则有多个条件

在使用 PySpark 进行数据处理时,经常需要根据不同的条件执行不同的操作。此时,可以通过 when 函数和 otherwise 函数实现类似于 SQL 中的 case when 语句的功能。同时,也可以通过多个 when 函数嵌套实现多条件判断。

下面是一个示例代码:

from pyspark.sql.functions import when, col

df = spark.createDataFrame([(1, 2), (2, 3)], ["x", "y"])
result = df.select(
    "x",
    when(col("x") == 1, "A")
    .when(col("x") == 2, "B")
    .otherwise("C")
    .alias("z")
)

result.show()

输出结果如下:

+---+---+
|  x|  z|
+---+---+
|  1|  A|
|  2|  B|
+---+---+

上面的代码中,whenotherwise 函数用于判断 x 列的值。当 x 的值等于 1 时,将 z 列的值设为 A;当 x 的值等于 2 时,将 z 列的值设为 B;否则将 z 列的值设为 C。

如果有多个条件需要判断时,可以通过嵌套多个 when 函数来实现。下面是一个示例代码:

df = spark.createDataFrame([(1, 2), (2, 3), (3, 4)], ["x", "y"])
result = df.select(
    "x",
    when(
        col("x") == 1, "A"
    ).when(
        col("x") == 2, "B"
    ).when(
        col("y") == 3, "C"
    ).otherwise(
        "D"
    ).alias("z")
)

result.show()

输出结果如下:

+---+---+
|  x|  z|
+---+---+
|  1|  A|
|  2|  B|
|  3|  D|
+---+---+

上面的代码中,首先判断 x 的值是否为 1,如果是则将 z 列的值设为 A;否则判断 x 的值是否为 2,如果是则将 z 列的值设为 B;否则判断 y 的值是否为 3,如果是则将 z 列的值设为 C;否则将 z 列的值设为 D。

总之,PySpark 中可以通过 when 函数和 otherwise 函数实现多条件判断。可以根据实际使用的场景来灵活运用。