计算pyspark数据帧中的速率

时间:2019-10-14 13:11:53

标签: pyspark

我有一个这样的spark数据框:

date      isF  
190502     1 
190502     0 
190503     1 
190504     1 
190504     0 
190505     1

我想为isF = 1时的每个日期计算“ isF”的比率。 预期结果是:

 date  rate
190502     0.5 
190503     1 
190504     0.5 
190505     1

我尝试过类似的方法,但是在这里我计算总和,如何计算比率? :

stats_daily_df = (tx_wd_df
             .groupBy("date", "isF")
             .agg(# select 
                when(col("isF") == 1, (sum("isF")).alias("sum"))  
                .otherwise(0))   # else 0.00
                  )

1 个答案:

答案 0 :(得分:3)

IIUC,下面可以帮助您:

df.groupBy('date').agg((f.sum('isF')/f.count('isF')).alias('rate')).show()
+------+----+
|  date|rate|
+------+----+
|190505| 1.0|
|190502| 0.5|
|190504| 0.5|
|190503| 1.0|
+------+----+