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

У меня есть кадр данных панд, как это:

     Col1       Col2

 0    a        Jack     
 1    a        Jill     
 2    b        Bob     
 3    c        Cain     
 4    c        Sam     
 5    a        Adam     
 6    b        Abel  

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

     Col1     Col2

0     a      Jack, Jill, Adam
1     b      Bob, Abel
2     c      Cain, Sam

Как мне лучше всего подойти к этой проблеме? Любые советы будут полезны. Заранее спасибо!

Ответы [ 3 ]

1 голос
/ 08 апреля 2019

Используйте

df = df.groupby('Col1')['Col2'].apply(', '.join)

print(df)
Col1
a    Jack, Jill, Adam
b           Bob, Abel
c           Cain, Sam
Name: Col2, dtype: object

Используйте reset_index, чтобы вернуть Col1 в качестве столбца вместо индекса

df = df.groupby('Col1')['Col2'].apply(', '.join).reset_index()

print(df)
  Col1              Col2
0    a  Jack, Jill, Adam
1    b         Bob, Abel
2    c         Cain, Sam
0 голосов
/ 08 апреля 2019

Вот другой подход, попробуйте:

df.groupby("Col1").agg(lambda x: ', '.join(x.unique())).reset_index()


  Col1              Col2
0    a  Jack, Jill, Adam
1    b         Bob, Abel
2    c         Cain, Sam

Что-то иметь в виду. Если ваш набор данных был примерно таким:

  Col1  Col2
0    a  Jack
1    a  Jill
2    b   Bob
3    c  Cain
4    c   Sam
5    a  Adam
6    b  Abel
7    a  Adam
8    c   Sam

Вы получите следующий вывод:

df.groupby("Col1").agg(lambda x: ', '.join(x)).reset_index()


  Col1                    Col2
0    a  Jack, Jill, Adam, Adam
1    b               Bob, Abel
2    c          Cain, Sam, Sam

Таким образом, используя unique, вы удаляете дубликаты в Col2. Надеюсь, что это поможет

0 голосов
/ 08 апреля 2019

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

new_df = df.groupby('Col1', as_index=False).agg(', '.join)
...