我有一个Spark数据框,它有两列,我试图用when-otherwise操作创建一个新列。
df_newcol = df.withColumn("Flag", when(col("a") <= lit(ratio1) | col("b") <= lit(ratio1), 1).otherwise(2))
但这是个错误
ValueError: Cannot convert column into bool: please use '&' for 'and', '|' for 'or', '~' for 'not' when building DataFrame boolean expressions.
我以前用过when和otherwise来处理一个列,而用它来处理多个列时,我们必须用不同的方式来编写逻辑。
谢谢。
您有一个运算符优先权问题,当比较与逻辑运算符(如
&
和|
)混合时,请确保将比较运算符放在括号中,如果使用逻辑运算符(如&
和|
),则您甚至不需要lit
,标量也应该可以工作:以下两项都应有效:
相关问题 更多 >
编程相关推荐