Объединение текстовых значений в столбце данных pandas на основе того же значения в другом столбце - PullRequest
1 голос
/ 09 октября 2019

У меня есть данные, где у меня могут быть разные люди, связанные с одной и той же записью.

Мне нужно объединить две записи вместе и заметить, что на ней два человека.

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

Name Share_ID value1 value2 value3 etc.
Joe  0001     1      2      4
Ann  0002     2      5      2
Mel  0001     1      2      4

Вывод должен быть:

Name      Share_ID value1 value2 value3 etc.
Joe, Mel  0001     1      2      4
Ann       0002     2      5      2

Я пытался использовать groupby

df1.groupby(['Share_ID'])['Name'].apply(', '.join).reset_index()

Но мой результат из этогобыло просто:

Share_ID Name
0001     Joe, Mel
0002     Ann

Столбец Имя скомбинирован правильно, но я потерял другие столбцы. Обратите внимание, что я не хочу, чтобы другие столбцы применяли к ним что-либо - записи Джо и Энн идентичны.

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

Ответы [ 3 ]

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

Вы можете взять полученный результат, объединить его с исходным кадром данных и удалить дубликаты:

pd.merge(df1.groupby(['Share_ID'])['Name'].apply(', '.join).reset_index(), df1, on='Share_ID').drop_duplicates(subset='Share_ID')
1 голос
/ 09 октября 2019

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

# Find the merged name data set and rename the 'Name' column
names = df1.groupby(['Share_ID'])['Name'].apply(', '.join).reset_index().rename(columns={'Name':'Merged Name'})
# Join it to the original dataset
df1 = df1.merge(names, on='Share_ID')
# Drop the 'Name' column then drop duplicates.
df1 = df1.drop(columns=['Name']).drop_duplicates()
0 голосов
/ 09 октября 2019

Любая конкретная причина не использовать values поля в группе по?

df1.groupby(['Share_ID','value1', 'value2', 'value3'])['Name'].apply(', '.join).reset_index()

Это даст требуемый результат.

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