case_when(condition1, value1, condition2, value2, ..., else_value)
Описание
Функция case_when()
выполняет условные выражения с множественными условиями, возвращая соответствующее значение для первого истинного условия.
Параметры
condition1
: Column - первое условиеvalue1
: Column - значение для первого условияcondition2
: Column - второе условиеvalue2
: Column - значение для второго условия...
: дополнительные пары условие-значениеelse_value
: Column - значение по умолчанию (если ни одно условие не истинно)
Возвращаемое значение
Column - значение, соответствующее первому истинному условию
Пример использования
from pyspark.sql.functions import case_when, col, lit
from pyspark.sql import SparkSession
# Создаем SparkSession
spark = SparkSession.builder.appName("case_when_example").getOrCreate()
# Создаем DataFrame с оценками
data = [
(90,),
(75,),
(60,),
(45,),
(30,)
]
df = spark.createDataFrame(data, ["score"])
# Применяем условное выражение
df = df.withColumn("grade",
case_when(
col("score") >= 90, lit("A"),
col("score") >= 80, lit("B"),
col("score") >= 70, lit("C"),
col("score") >= 60, lit("D"),
lit("F")
))
df.show(truncate=False)
# Результат:
# +-----+-----+
# |score|grade|
# +-----+-----+
# |90 |A |
# |75 |C |
# |60 |D |
# |45 |F |
# |30 |F |
# +-----+-----+