Pyspark - 按列分组并从一列整数数组中收集唯一的一组值
Pyspark - group by column and collect unique set of values from a column of arrays of integers
我需要一些帮助来解决以下问题。
我有一个包含两列的 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]
这应该可以解决问题 - 您需要先 explode()
,然后 collect_set()
:
df.select("group", F.explode(F.col("col_list")).alias("col_list")).groupby("group").agg(F.collect_set('col_list'))
我需要一些帮助来解决以下问题。
我有一个包含两列的 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]
这应该可以解决问题 - 您需要先 explode()
,然后 collect_set()
:
df.select("group", F.explode(F.col("col_list")).alias("col_list")).groupby("group").agg(F.collect_set('col_list'))