Как создать новый столбец на основе значений двух столбцов в Spark - PullRequest
0 голосов
/ 29 апреля 2020

Итак, я хочу создать новый столбец в моем фрейме данных, строки которого зависят от значений из двух столбцов, а также содержат условие.

Я пробовал это, но это не работает.

some_value = ...
df = df.withColumn("new_col", col("col1") if col("col2") == some_value else None)

Как правильно это сделать?

Ответы [ 3 ]

1 голос
/ 29 апреля 2020

Вы можете использовать функцию when.

newval='10002'
df2 = df.withColumn("new_col", when((col("col1") == lit(newval)), "col1").otherwise(None))
df2.show()
1 голос
/ 29 апреля 2020

Тривиальный пример использования с expr, также можно использовать when:

val df3 = df2.withColumn("new_col", expr("case when c1 = 1 and c2 = 101 then c1 + c2 else 999 end"))
0 голосов
/ 29 апреля 2020

Это сработало для меня,

 new_col_expr = when(col("col2").eqNullSafe(some_value), col("col1")).otherwise(None)
 df = df.withColumn("new_col", new_col_expr)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...