Объединить групповой столбец с запятой в DataFrame Pandas - PullRequest
1 голос
/ 15 апреля 2019

У меня есть такой набор данных:

>>> df = pd.DataFrame({'id_sin':['s123','s123','s124','s124'],
                       'raison':['first problem','second problem','album','dog']
    })
>>> df
  id_sin          raison
0   s123   first problem
1   s123  second problem
2   s124           album
3   s124             dog

Это ожидаемый результат:

  id_sin                         raison
0   s123  first problem, second problem
1   s124                     album, dog

Что я пробовал:

df['raison'] = df.groupby('id_sin')['raison'].apply(lambda x: ', '.join(x))

Но не работает ... что мне не хватает? Спасибо за помощь!

Ответы [ 2 ]

3 голосов
/ 16 апреля 2019

Попробуйте использовать agg:

df.groupby('id_sin')['raison'].agg(', '.join).reset_index()

Вывод:

  id_sin                         raison
0   s123  first problem, second problem
1   s124                     album, dog
1 голос
/ 16 апреля 2019

Попробуйте изменить группы на списки:

df.groupby(['id_sin']).raison.apply(lambda x: ', '.join(list(x)))

После тестирования кода выясняется, что вам не следует делать df['raison'] =..., поскольку df.groupby('id_sin')['raison'].apply(lambda x: ', '.join(x)) имеет длину 2 с индексом, отличным от df,который имеет длину 4.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...