Apache spark spark dataframe:使用2个布尔条件创建新列

Apache spark spark dataframe:使用2个布尔条件创建新列,apache-spark,pyspark,apache-spark-sql,pyspark-sql,Apache Spark,Pyspark,Apache Spark Sql,Pyspark Sql,我想基于2个布尔条件,使用位AND运算来改变我的数据帧 df%>%mutate(newVariable=ifelse(variable1==“value1”&variable2==“value2,variable3,NULL) 所以在PySpark中,它测试了这个: import pyspark.sql.函数为func df.withColumn(“新变量”),函数时(\ 函数列(“variable1”)=“value1”和函数列(“variable2”)=“value2”\ 函数列(“变量3

我想基于2个布尔条件,使用位AND运算来改变我的数据帧

df%>%mutate(newVariable=ifelse(variable1==“value1”&variable2==“value2,variable3,NULL)
所以在PySpark中,它测试了这个:

import pyspark.sql.函数为func
df.withColumn(“新变量”),函数时(\
函数列(“variable1”)=“value1”和函数列(“variable2”)=“value2”\
函数列(“变量3”))
但我有一个错误


使用spark dataframe创建此类新变量的正确方法是什么?

您必须记住运算符优先级。在Python中,
&
的优先级高于
=
,因此必须用括号括起各个相等性检查:

(func.col("variable1") == "value1") & (func.col("variable2") == "value2")
否则,表达式的计算公式为:

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

您必须记住运算符优先级。在Python中,
&
的优先级高于
=
,因此必须将各个相等性检查括起来:

(func.col("variable1") == "value1") & (func.col("variable2") == "value2")
否则,表达式的计算公式为:

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

什么是错误?什么是错误?