У меня есть вход вроде:
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
Тебе нужно:
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']
Вы можете получить такой дикт:
df.groupby('column1')['column2'].apply(lambda x: x.tolist()).to_dict()