как объединить строки в кадре данных по идентификатору - PullRequest
0 голосов
/ 01 мая 2020

У меня есть фрейм данных:

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

Мне нужно объединить все значения имени в столбце id. Подскажите пожалуйста как из него получить:

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

Ответы [ 3 ]

2 голосов
/ 01 мая 2020

Вы можете использовать groupBy и собирать функции. В зависимости от ваших потребностей, вы можете использовать список или установить et c.

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

, если вам нужны повторяющиеся значения

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

, если вы хотите уникальные значения

1 голос
/ 01 мая 2020

Используйте функции groupBy и collect_list для этого случая.

from pyspark.sql.functions import *
df.groupBy(col("id")).agg(collect_list(col("Name")).alias("Name")).show(10,False)

#+---+------------------------+
#|id |Name                    |
#+---+------------------------+
#|1  |['Gary', 'Danny']       |
#|2  |['Kevin', 'Christopher']|
#+---+------------------------+
0 голосов
/ 01 мая 2020
df.groupby('id')['Name'].apply(list)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...