我正在寻找学习如何在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[:])
答案 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...