(列)
条件のリストを評価し、複数の可能な結果式の中から1つを返します。
構文
Python
when(condition, value)
パラメーター
パラメーター | Type | 説明 |
|---|---|---|
| 列 | Boolean条件 |
| Value | 条件が真の場合に返される値 |
戻り値
列
例
例 1: 条件と値とともにwhen()を使用して新しい列を作成します。
Python
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()
Output
# +-----+------------------------------------------------------------+
# | name|CASE WHEN (age > 4) THEN 1 WHEN (age < 3) THEN -1 ELSE 0 END|
# +-----+------------------------------------------------------------+
# |Alice| -1|
# | Bob| 1|
# +-----+------------------------------------------------------------+
例2:複数のwhen()条件を連鎖させる。
Python
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()
Output
# +-------+---------------------------------------------------------------------------+
# | name|CASE WHEN (age < 3) THEN Young WHEN (age < 5) THEN Middle-aged ELSE Old END|
# +-------+---------------------------------------------------------------------------+
# | Alice| Young|
# | Bob| Middle-aged|
# |Charlie| Old|
# +-------+---------------------------------------------------------------------------+
例3:リテラル値を条件として使用する。
Python
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()
Output
# +-----+----+
# | name|when|
# +-----+----+
# |Alice| 1|
# | Bob| 1|
# +-----+----+