【发布时间】:2019-12-31 19:55:16
【问题描述】:
我需要一些帮助来解决以下问题。
我有一个包含两列的 pyspark 数据框:
+----------------------+------+
| col_list | group|
+----------------------+------+
|[1, 2, 3, 4, 5, 6, 7] |group1|
| [6, 7, 8] |group1|
| [1, 2, 3, 4] |group2|
| [10, 11] |group2|
+----------------------+------+
我想对名为group 的列进行分组,并将唯一值仅收集到来自col_list 列的一个列表中。
我试过这个:
df.groupby("group").agg(F.flatten(F.collect_set('col_list')))
它的回答是这样的:
+------+-------------------------------+
| group|flatten(collect_set(col_list)) |
+------+-------------------------------+
|group1| [1,2,3,4,5,6,7,6,7,8]|
|group2| [10, 11, 1, 2, 3, 4] |
+------+-------------------------------+
group1 展平列表有重复项,我需要一些帮助来仅返回唯一值,例如:
[1,2,3,4,5,6,7,8]
【问题讨论】:
-
只需使用
F.array_distinct()从扁平化列表中删除重复项
标签: python pyspark pyspark-dataframes