значение , если (столбец)

Оцените список условий и верните одно из нескольких возможных выражений результатов.

Синтаксис

when(condition, value)

Параметры

Параметр Тип Описание
condition колонна Логическое условие
value value Значение, возвращаемое, если условие имеет значение true

Возвраты

колонна

Примеры

Пример 1. Использование when() условий и значений для создания нового столбца.

from pyspark.sql import functions as sf
df = spark.createDataFrame([(2, "Alice"), (5, "Bob")], ["age", "name"])
result = df.select(df.name, sf.when(df.age > 4, 1).when(df.age < 3, -1).otherwise(0))
result.show()
# +-----+------------------------------------------------------------+
# | name|CASE WHEN (age > 4) THEN 1 WHEN (age < 3) THEN -1 ELSE 0 END|
# +-----+------------------------------------------------------------+
# |Alice|                                                          -1|
# |  Bob|                                                           1|
# +-----+------------------------------------------------------------+

Пример 2. Связывание нескольких when() условий.

from pyspark.sql import functions as sf
df = spark.createDataFrame([(1, "Alice"), (4, "Bob"), (6, "Charlie")], ["age", "name"])
result = df.select(
    df.name,
    sf.when(df.age < 3, "Young").when(df.age < 5, "Middle-aged").otherwise("Old")
)
result.show()
# +-------+---------------------------------------------------------------------------+
# |   name|CASE WHEN (age < 3) THEN Young WHEN (age < 5) THEN Middle-aged ELSE Old END|
# +-------+---------------------------------------------------------------------------+
# |  Alice|                                                                      Young|
# |    Bob|                                                                Middle-aged|
# |Charlie|                                                                        Old|
# +-------+---------------------------------------------------------------------------+

Пример 3. Использование литеральных значений в качестве условий.

from pyspark.sql import functions as sf
df = spark.createDataFrame([(2, "Alice"), (5, "Bob")], ["age", "name"])
result = df.select(
    df.name, sf.when(sf.lit(True), 1).otherwise(
        sf.raise_error("unreachable")).alias("when"))
result.show()
# +-----+----+
# | name|when|
# +-----+----+
# |Alice|   1|
# |  Bob|   1|
# +-----+----+