2016-10-06 2 views
0

Я хотел бы мутировать мой dataframe основываясь на 2 логических условиях с побитовым И операциямиискрового dataframe: Создать новый столбец с 2 логическими условиями

df %>% mutate(newVariable = ifelse(variable1 == "value1" & variable2 == "value2, variable3, NULL) 

Так в pyspark он испытал это:

import pyspark.sql.functions as func 

df.withColumn("newVariable", func.when(\ 
    func.col("variable1") == "value1" & func.col("variable2") == "value2", \ 
    func.col("variable3"))) 

Но у меня есть ошибка

Что такое правильный способ создать такую ​​новую переменную с искровым dataframe?

+0

Что такое ошибка? – MJH

ответ

0

Вы должны помнить о приоритете оператора. В Python & имеет более высокий приоритет, чем == поэтому отдельные проверки равенства должны быть в круглых скобках:

(func.col("variable1") == "value1") & (func.col("variable2") == "value2") 

В противном случае выражение оценивается как:

(func.col("variable1") == ("value1" & func.col("variable2"))) == "value2" 
Смежные вопросы