Как агрегировать расширенные значения - python - pandas

1

У меня есть вход вроде:

     column1     column2
    MGI:97874   MP:0008796
    MGI:97874   MP:0009395
    MGI:97874   MP:0009937
    MGI:97874   MP:0011098
    MGI:97874   MP:0011703
    MGI:96522   MP:0001614
    MGI:96522   MP:0000364
    MGI:96522   MP:0006093

Мой вопрос заключается в том, как объединить строки одного и того же значения (в столбце один) в одной строке, поэтому вывод будет таким:

MGI:97874 MP:0008796 MP:0009395 MP:0009937 MP:0011098 MP:0011703
MGI:96522 MP:0001614 MP:0000364 MP:0006093
Теги:
pandas
pandas-groupby

2 ответа

1

Тебе нужно:

g = df.groupby('column1')['column2'].apply(list).reset_index()

Выход:

    column1                                                       column2
0  MGI:96522                          [MP:0001614, MP:0000364, MP:0006093]
1  MGI:97874  [MP:0008796, MP:0009395, MP:0009937, MP:0011098, MP:0011703]

Теперь, когда у вас есть агрегированный фрейм, вы можете печатать в любом формате.

Может быть, что-то вроде:

for idx, x in g.iterrows():
    print(x['column1'], [y for y in x['column2']])

Выход:

MGI:96522 ['MP:0001614', 'MP:0000364', 'MP:0006093']
MGI:97874 ['MP:0008796', 'MP:0009395', 'MP:0009937', 'MP:0011098', 'MP:0011703']
0

Вы можете получить такой дикт:

df.groupby('column1')['column2'].apply(lambda x: x.tolist()).to_dict()

Ещё вопросы

Сообщество Overcoder
Наверх
Меню