agg条件:关键字不能是Pyspark的表达式

时间:2019-10-04 13:16:39

标签: pyspark

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

但是我得到这个错误:

  

文件“”,第5行       when(col(“ isFraud”)= 1,sum(“ montant”))           ^ SyntaxError:关键字不能是表达式

这里的代码:

 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"))
                 )
                )

请问有什么主意吗? 谢谢

2 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:0)

您不能在when()函数中使用.agg()

您可以尝试:

 CNP_df_fraude= tx_wd_df.filter(F.col("isFraud") == 1)
                .groupBy("POS_Cardholder_Presence")
                .sum("montant")