【发布时间】:2026-01-01 00:30:01
【问题描述】:
假设我有这个 Spark 数据框:
col1 | col2 | col3 | col4
a | g | h | p
r | i | h | l
f | j | z | d
a | j | m | l
f | g | h | q
f | z | z | a
...
我想取消透视列并按出现次数获取前 n 个元素的数组。例如 n=3:
columnName | content
col1 | [f, a, r]
col2 | [g, j, i]
col3 | [h, z, m]
col4 | [l, a, d]
我设法使用此代码将列名加入到单个列中:
columnNames = output_df.columns
output_df = output_df.withColumn("columns", F.array([F.lit(x) for x in columnNames]))
我想我可以使用 explode 功能,但不确定它是不是最有效的方法。
有什么建议吗?
谢谢
【问题讨论】:
-
top n elements是什么意思?按发生次数? -
@BlueSheepToken 是出现次数最多的 n 个元素。我会更新问题。
标签: python hive pyspark apache-spark-sql