Как объединить определенные строки в Python? - PullRequest
0 голосов
/ 18 февраля 2019

Я хочу узнать, как объединить несколько столбцов в Python.У меня есть набор данных, который выглядит следующим образом:

gene    match_type  drug                sources      pmids
ABO     Definite    CHEMBL50267         DrugBank     17139284|17016423
ABO     Definite    URIDINE_DIPHOSPHATE TdgClinicalTrial   17139284|17016423
ABO     Definite    CHEMBL439009        DrugBank     12972418
ABO     Definite    CHEMBL1232343       DrugBank       NA
ABO     Definite    CHEMBL503075        DrugBank       NA   

Я пытаюсь свести это в один ряд (объединяя столбец наркотиков, столбец источников и столбец pmids), чтобы выглядеть так:

gene    match_type  drug                                                                         sources                                           pmids
ABO     Definite    CHEMBL1232343 CHEMBL439009 CHEMBL50267 CHEMBL503075 URIDINE_DIPHOSPHATE NA  DrugBank TdgClinicalTrial DrugBank DrugBank DrugBank    0 12972418 17139284|17016423  17139284|17016423 NA NA

Я рассмотрел использование операторов if, использующих pandas.concat и .iterrows, чтобы пройти через все, но я немного заблудился с этим, и я не уверен, с какими функциями я должен был начать, чтобы достичь своей цели.Буду признателен за любую помощь в правильном направлении.

Это то, что я пробовал, но оно ошибочно, если не все:

for index, row in data.iterrows():
    if[1,2]==[2,1]:
        pd.concat(['drug'],['interaction_types'],['sources'],['pmids'],)
    else: 
        print(row[:])

1 Ответ

0 голосов
/ 18 февраля 2019

Использование pd.DataFrame.groupby и его agg:

joined_df = df.groupby(["gene", "match_type"]).agg(lambda x: ' '.join(x.astype(str))).reset_index()
print(joined_df)
  gene match_type                                               drug  
0  ABO   Definite  CHEMBL50267 URIDINE_DIPHOSPHATE CHEMBL439009 C...   

                                             sources
0  DrugBank TdgClinicalTrial DrugBank DrugBank Dr...   

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