如何在python中连接特定行?

时间:2019-02-18 11:28:21

标签: python concatenation

我正在寻找学习如何在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

我已经研究过使用使用pandas.concat和.iterrows的if语句来遍历所有内容,但是我对此有些迷惑,我不确定实际上应该从什么功能开始实现我的目标。在正确方向上的任何帮助将不胜感激。

这是我尝试过的方法,但是如果不是全部,那就错了很多

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

1 个答案:

答案 0 :(得分:1)

使用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...