Использование панд для объединения значений на основе значений в других столбцах - PullRequest
1 голос
/ 31 октября 2019

Я очень новичок в использовании Python и гуглюсь, но, похоже, ничто не вписывается в мою проблему.

У меня есть набор данных, подобный следующему:

  groupID   sentenceID           strings
   A        0                    'abc'
   A        0                    'def'
   A        1                    'ghi'
   B        0                    'abc'
   B        1                    'def'
   B        2                    'ghi'

, и я хотел бы, чтобы результат выглядел следующим образом:

  groupID   sentenceID           strings
   A        0                    'abc. def'
   A        1                    'ghi'
   B        0                    'abc'
   B        1                    'def'
   B        2                    'ghi'

Записано простым английским языком, чтоЯ пытаюсь сделать это следующим образом:

Для уникальной группы в groupID:если предложение повторяется, то объединить строкиесли предложение не дублируется, выведите строку

Я уверен, что это легко сделать с пандами, но у меня проблемы с пониманием этого. Может ли кто-нибудь помочь? Заранее спасибо.

Ответы [ 2 ]

1 голос
/ 31 октября 2019

Вы можете использовать groupby и пользовательскую функцию агрегирования, чтобы сделать это

df.groupby(['groupID','sentenceID']).\
   aggregate({'strings': (lambda x: '. '.join(x))}).\
   reset_index()
0 голосов
/ 31 октября 2019

Другой способ с groupby() и apply()

df.groupby(['groupID','sentenceID'])['strings'].apply(lambda x: ', '.join(x)).reset_index()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...