我想评估两种情况: -
import pyspark.sql.functions as F
df = df.withColumn(
'trueVal', F.when(df.value < 1 OR df.value2 == 'false' , 0 ).otherwise(df.value))
为此,我使用'OR'
获得'无效语法'即使我尝试使用嵌套的when语句: -
df = df.withColumn(
'v',
F.when(df.value < 1,(F.when( df.value =1,0).otherwise(df.value))).otherwise(df.value)
)
为此,我得到'keyword can't be an expression'
嵌套的when语句。
我如何在when
任何解决方法中使用多个条件?
答案 0 :(得分:19)
pyspark.sql.DataFrame.where
以布尔列为条件。使用PySpark时,在阅读“Column”时想到“Column Expression”通常很有用。
PySpark列上的逻辑操作使用bitwise operators:
&
and
{li> |
or
{li> ~
not
将这些与比较运算符(例如<
)组合时,通常需要使用括号。
在您的情况下,正确的陈述是:
import pyspark.sql.functions as F
df = df.withColumn('trueVal',
F.when((df.value < 1) | (df.value2 == 'false'), 0).otherwise(df.value))
另请参阅:SPARK-8568