2016-10-06 66 views
0

我想變異我的數據幀基於與pyspark位與操作火花非數據幀:2個布爾條件

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

所以2個布爾條件創建新列它測試了:

import pyspark.sql.functions as func 

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

但我有一個錯誤

是什麼造成這種火花數據幀的新變量的正確方法是什麼?

+0

有什麼錯誤? – MJH

回答

0

您必須記住運算符優先級。在Python &==所以個人平等的檢查更高的優先級已經被括號:

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

否則表達被評價爲:

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