как сгруппировать дублирующиеся значения, но сохранить другие столбцы кадра данных - PullRequest
0 голосов
/ 28 февраля 2019

Я хочу сгруппировать дублирующиеся значения столбца данных, но также сохранить другой столбец данных после группировки.Например, данные выглядят так: df-

id     interest   location
1        A            X
2        A            Y
1        B            X
3        C            Z
2        D            Y

Выходные данные должны быть

id     interest      location
1        A,B            X
2        A,D            Y
3        C              Z

Следующий код дает только столбец идентификатора и интереса, однако я хочу получить местоположение соответствующего пользователятоже.

unique_id = df.groupby('id')['interest'].unique().reset_index()

Ответы [ 2 ]

0 голосов
/ 28 февраля 2019

Немного неуклюжее, но рабочее решение.Очень похоже на то, что предложил Вэнь-Бен, за исключением того, что он работает с произвольным числом столбцов, сортирует элементы перед агрегацией, а также агрегирует местоположения.

result = df.groupby('id').apply(lambda x:
                                pd.Series({name: ','.join(sorted(set(x[name]))) 
                                          for name in x})).reset_index()
#   id interest location
#0   1      A,B        X
#1   2      A,D        Y
#2   3        C        Z
0 голосов
/ 28 февраля 2019

Использование groupby.agg

yourdf=df.groupby('id',as_index=False).agg({'interest':','.join,'location':'first'})
yourdf
Out[140]: 
   id interest location
0   1      A,B        X
1   2      A,D        Y
2   3        C        Z
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...