2016-10-06 6 views
0

に新しい列を作成します。私はビット単位で2つのブール条件に基づいて、私のデータフレームを変異させたいAND演算火花データフレーム: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"))) 

しかし、私はエラー

スパークデータフレームを使用して新しい変数のこの種を作成するための正しい方法は何がありますか?

+0

エラーとは何ですか? – MJH

答えて

0

オペレータの優先順位について覚えておく必要があります。 Pythonの&==ので、個々の等価性チェックが括弧する必要がより高い優先順位を持つ:

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

そうでなければ表現は次のように評価されます。

(func.col("variable1") == ("value1" & func.col("variable2"))) == "value2" 
関連する問題