首页 > 解决方案 > 如何按 id 组合数据框中的行

问题描述

我有一个数据框:

+---------+---------------------+                                                 
|       id|                 Name|
+---------+---------------------+
|        1|               'Gary'|
|        1|              'Danny'|
|        2|        'Christopher'|
|        2|              'Kevin'|
+---------+---------------------+

我需要合并 id 列中的所有 Name 值。请告诉我如何从中获得:

+---------+------------------------+                                                 
|       id|                    Name|
+---------+------------------------+
|        1|       ['Gary', 'Danny']|
|        2| ['Kevin','Christopher']|
+---------+------------------------+

标签: apache-sparkpyspark

解决方案


您可以使用 groupBy 和 collect 函数。根据您的需要,您可以使用列表或集合等。

df.groupBy(col("id")).agg(collect_list(col("Name"))

如果你想要重复的值

df.groupBy(col("id")).agg(collect_set(col("Name"))

如果你想要独特的价值


推荐阅读