首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将dataframe与类似于"in“操作符的方法合并

将dataframe与类似于"in“操作符的方法合并
EN

Stack Overflow用户
提问于 2022-11-05 17:24:30
回答 1查看 29关注 0票数 -1

我想合并两个数据流。其中之一是“命中”数据,其中我有许多蛋白质ids。第二种是数据库数据,它包含所有已知的蛋白质及其功能。见下面的例子。

目标是将我的蛋白质命中与数据库dataframe中的相应行关联起来。更复杂的是,我的一些点击在一行中包含多个蛋白质(下面是Protein_3A;Protein_B )。是否有一种方法可以使用在操作中合并这些数据帧,以便将蛋白质3的行匹配,如下面的df所示,尽管数据库数据中只存在一个子类型(Protein_3B)?

示例启动dataframes

代码语言:javascript
复制
 hit_df = pd.DataFrame({"Hits": ["Protein_1", "Protein_2", "Protein_3A; Protein_3B", "Protein_8", "Protein_5"]})
        
 database_df = pd.DataFrame({"Proteins": ["Protein_1", "Protein_2", "Protein_3B", "Protein_4", "Protein_9", "Protein10"],"Function": ["FuncX", "FuncY", "FuncZ", "Unknown", "Unkwown", "FuncA"]})

期望的结果数据

代码语言:javascript
复制
matched_results_df = pd.DataFrame({"Hits":["Protein_1", "Protein_2", "Protein_3B"], "Function":["FuncX", "FuncY", "FuncZ"]})
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-11-05 17:31:09

首先,根据新行上的;符号拆分每个表达式。

代码语言:javascript
复制
hit_df= hit_df["Hits"].str.split("; ", expand = False).explode().to_frame()
print(hit_df) 
    Hits
0   Protein_1
1   Protein_2
2   Protein_3A
2   Protein_3B
3   Protein_8
4   Protein_5

然后使用isin函数,只得到匹配值。

代码语言:javascript
复制
matched_results_df = database_df[database_df['Proteins'].isin(hit_df['Hits'])]
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74329948

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档