agg条件:关键字can';不要用Pyspark来表达

agg条件:关键字can';不要用Pyspark来表达,pyspark,Pyspark,我正在使用pyspark创建一个数据帧,当列“isfraud”的值=1时,该数据帧计算“montant”的和 但我得到了这个错误: 文件“”,第5行 当(col(“isFraud”)=1,sum(“montant”)) ^SyntaxError:关键字不能是表达式 代码如下: CNP_df_fraude= (tx_wd_df #.filter("isFraude =='1'").filter("POS_Card_Presence =='CardNotPrese

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

但我得到了这个错误:

文件“”,第5行 当(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"))
                 )
                )
有什么想法吗? 谢谢

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

但是,您可以尝试:

CNP_df_fraude=tx_wd_df.filter(F.col(“isFraud”)==1)
.groupBy(“POS卡持卡人在场”)
.sum(“蒙坦”)
只需将when()放入sum()中:


谢谢,但我不想过滤“isfraud”==1个hanks,但我得到了这个错误:NameError:name'when'未定义“@Nasri,您需要从pyspark.sql导入所有三个函数:
。函数导入when,col,sum
CNP_df_fraude= (tx_wd_df
            .groupBy("POS_Cardholder_Presence")
            .agg(
                 sum(when(col("isFraud")==1, col("montant")).otherwise(0))
             )
            )