when (列)

条件の一覧を評価し、複数の可能な結果式のいずれかを返します。

構文

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|
# +-----+----+