var df = Seq(("Steve",1),("Steve",0),("Steve",0),("Michael",3),("Michael",2),("Michael",0),("Katherine",4),("Katherine",0),("Devin",0)).toDF("name","score")
df.show

我想要按名称分组,获得等于0的分数,然后将该数字除以组的总规模。
因此,它应该为"Steve“组返回2/3,为"Michael”组返回1/3,为"Katherine“组返回1/2,为"Devin”组返回1/1。
谢谢!
发布于 2020-11-10 02:20:56
尝尝这个,
val df1 = df.withColumn("zero", when($"score" > 0, 0).otherwise(1))
.groupBy("name")
.agg((sum("zero") / count("name")).as("zero_avg") )
df1.show()输出:
+---------+------------------+
| name| zero_avg|
+---------+------------------+
| Steve|0.6666666666666666|
| Michael|0.3333333333333333|
| Devin| 1.0|
|Katherine| 0.5|
+---------+------------------+https://stackoverflow.com/questions/64755497
复制相似问题