我想修改当前为空的dataframe列(Age)的单元格值,并且仅当另一列(Survived)的对应行的值为0(其中Age为空)时才执行此操作。如果存活列中的值为1,而年龄列中的值为空,则将其保留为空。
我试图使用&&
运算符,但它不起作用。这是我的代码:
tdata.withColumn("Age", when((tdata.Age == "" && tdata.Survived == "0"), mean_age_0).otherwise(tdata.Age)).show()
有什么建议吗?谢谢。
错误消息:
SyntaxError: invalid syntax
File "<ipython-input-33-3e691784411c>", line 1
tdata.withColumn("Age", when((tdata.Age == "" && tdata.Survived == "0"), mean_age_0).otherwise(tdata.Age)).show()
^
它应该至少在Pyspark2.4中有效
因为Python没有
&&
运算符,所以会出现SyntaxError
错误异常。它有and
和&
,后者是在Column
上创建布尔表达式的正确选择(逻辑析取是|
,逻辑否定是~
)。您创建的条件也无效,因为它不考虑operator precedence。^Python中的{}比
==
具有更高的优先级,因此表达式必须用括号括起来。另一方面,
when
函数相当于case
表达式而不是WHEN
子句。仍然适用同样的规则。连词:分离:
当然,您可以单独定义条件以避免出现括号:
当pyspark中的时,可以使用&;(for and)和|(for or)创建多个条件。
注意:在pyspark中,t必须将每个组合成条件的表达式括在括号()中
在Spark Scala代码中(&;)或(|)条件可在when函数中使用
一、二、二、三
此代码段是从sparkbyexamples.com复制的
相关问题 更多 >
编程相关推荐