我有一个这样的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
)
答案 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|
+------+----+