![](/img/trans.png)
[英]How do I union two datasets in Palantir Foundry within a code workbook?
[英]How do I set value to 0 of column with multiple statements in Pyspark and Palantir Foundry
我试图发表一个声明,基本上说如果EDW_ABC.edw_xdpt_act_arrv_lb
为 NULL,则使用EDW_ABC.edw_putt_act_arrv_lb
,如果两者都为 null,则将值设置为 0。我该怎么做? 我正在尝试以下操作,但我知道这是不正确的。
EDW_ABC = EDW_ABC.withColumn('act_arrv_abc_lbs', F.when(
(EDW_ABC.edw_xdpt_act_arrv_lb.isNull() == True) & (EDW_ABC.edw_putt_act_arrv_lb.isNull() == True). F.lit(0)\
.otherwise(EDW_ABC.edw_xdpt_act_arrv_lb.isNull()), EDW_ABC.edw_putt_act_arrv_lb)
你并不需要指定的条件otherwise
,这样
EDW_ABC = EDW_ABC.withColumn(
'act_arrv_abc_lbs',
F.when(
EDW_ABC.edw_xdpt_act_arrv_lb.isNull() & EDW_ABC.edw_putt_act_arrv_lb.isNull(), F.lit(0)
).otherwise(
EDW_ABC.edw_putt_act_arrv_lb
)
)
when
和otherwise
操作为if
& else
,因此,如果在第一条件when
不被满足,否则自动假设相反。
您将需要使用pyspark.sql.functions.coalesce()函数,该函数返回列表中第一列不返回 NULL 的值。
EDW_ABC = EDW_ABC.withColumn('act_arrv_abc_lbs', F.coalesce(F.col("edw_xdpt_act_arrv_lb"), F.col("edw_putt_act_arrv_lb"), F.lit(0))
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.