首页 > 解决方案 > agg 条件:关键字不能是 Pyspark 的表达式

问题描述

我正在使用 pyspark 来创建一个数据框,该数据框在 "isfraud" ==1 列的值时计算 "montant" 的总和。

但我得到这个错误:

文件“”,第 5 行 when(col("isFraud") =1, sum("montant")) ^ SyntaxError: keyword can't be an expression

这里的代码:

 CNP_df_fraude= (tx_wd_df
                 #.filter("isFraude =='1'").filter("POS_Card_Presence =='CardNotPresent'")
                 .groupBy("POS_Cardholder_Presence")
                 .agg(
                     when(col("isFraud") =1, sum("montant"))
                 )
                )

请问有什么想法吗?谢谢

标签: pyspark

解决方案


只需将 when() 放在 sum() 中:

CNP_df_fraude= (tx_wd_df
            .groupBy("POS_Cardholder_Presence")
            .agg(
                 sum(when(col("isFraud")==1, col("montant")).otherwise(0))
             )
            )

推荐阅读