Отсутствуют столбцы при попытке сгруппировать несколько строк в пандах - PullRequest
1 голос
/ 09 июля 2019

У меня есть фрейм данных с соответствующей информацией, и я хочу сгруппировать по одному столбцу, скажем id, с другими столбцами с таким же идентификатором, соединенными символом «|».Однако, когда я запускаю свой код, большинство моих столбцов заканчиваются отсутствием (появляются только первые 3), и я не знаю, что происходит не так.

Мой код:

df = df.groupby('id').agg(lambda col: '|'.join(set(col))).reset_index()

Например, мои данные начинаются как

  id   words    ... (other columns here)
0  a     asd
1  a     rtr
2  b       s
3  c  rrtttt
4  c    dsfd

, и я хочу

id               ... (other columns here)
a        asd|rtr
b              s
c    rrtttt|dsfd

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

1 Ответ

2 голосов
/ 09 июля 2019

Заранее преобразовав в строку, вы можете избежать лямбды, используя agg(set) и applymap после:

df.astype(str).groupby('id').agg(set).applymap('|'.join)

Минимальный проверяемый пример

df = pd.DataFrame({
   'id': ['a', 'a', 'b', 'c', 'c'],
   'numbers': [1, 2, 2, 3, 3],
   'words': ['asd', 'rtr', 's', 'rrtttt', 'dsfd']})
df

  id  numbers   words
0  a        1     asd
1  a        2     rtr
2  b        2       s
3  c        3  rrtttt
4  c        3    dsfd

df.astype(str).groupby('id').agg(set).applymap('|'.join)

   numbers        words
id                     
a      1|2      asd|rtr
b        2            s
c        3  rrtttt|dsfd
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...