📅  最后修改于: 2023-12-03 15:33:55.776000             🧑  作者: Mango
在使用 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|
+---+---+
上面的代码中,when
和 otherwise
函数用于判断 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
函数实现多条件判断。可以根据实际使用的场景来灵活运用。