如何在scala中的数据集中的特定列中找到最频繁的值?例如,如果其中一列如下所示:西雅图巴塞罗那里斯本巴塞罗那蒙特利尔巴塞罗那里斯本我需要得到“巴塞罗那”作为结果。
ds97pgxw1#
把c.s.reddy的评论变成一个完整的答案:scastie链接:https://scastie.scala-lang.org/5gignmjgtucvdyrsba33eg
val xs = List( "Seattle", "Barcelona", "Lisbon", "Barcelona", "Montreal", "Barcelona", "Lisbon" ) val result = xs.groupBy(x => x) .map { case (k, v) => k -> v.size } .maxBy(_._2) ._1 println(result) // Barcelona
k3fezbri2#
如果您正在寻找基于spark的解决方案,这与jack koenig的答案相同,但使用spark函数而不是scala函数:
val df = List( "Seattle", "Barcelona", "Lisbon", "Barcelona", "Montreal", "Barcelona", "Lisbon" ).toDF("city") val max = df .groupBy("city") .count() .sort(desc("count")) .head() .getString(0)
2条答案
按热度按时间ds97pgxw1#
把c.s.reddy的评论变成一个完整的答案:
scastie链接:https://scastie.scala-lang.org/5gignmjgtucvdyrsba33eg
k3fezbri2#
如果您正在寻找基于spark的解决方案,这与jack koenig的答案相同,但使用spark函数而不是scala函数: