PySpark-如何找出数组列中最常出现的前 n 个值?

use*_*073 0 python arrays apache-spark apache-spark-sql pyspark

对于下面的示例数据,想知道如何找出列中最常出现的值colour。的数据类型colour是WrappedArray。数组中可能有 n 个元素。在此示例中,颜色应为黄色,然后是出现两次的蓝色。非常感谢您的帮助。

Name   Colour 
 A      ('blue','yellow')
 B      ('pink', 'yellow')
 C      ('green', 'black')
 D      ('yellow','orange','blue')
Run Code Online (Sandbox Code Playgroud)

小智 5

我会分解颜色列,然后简单地运行 groupBy 并计数以获得您需要的内容。

df \
.select(explode('colour').alias('colour')) \
.groupBy('colour') \
.count() \
.orderBy(col('count').desc())
Run Code Online (Sandbox Code Playgroud)