![](/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.