簡體   English   中英

如何在 Pyspark 和 Palantir Foundry 中使用多個語句將列的值設置為 0

[英]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
    )
)

whenotherwise操作為ifelse ,因此,如果在第一條件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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM