[英]How to merge two pandas dataframes on column of sets
我在两个数据框中都有表示生物系统中相互作用伙伴的列,因此,如果gene_A与gene_B相互作用,则“ gene_pair”列中的条目将为{gene_A,gene_B}。 我想做一个内部联接,但是尝试:
pd.merge(df1, df2, how='inner', on=['gene_pair'])
引发错误
TypeError: type object argument after * must be a sequence, not itertools.imap
我需要在无序对上进行合并,据我所知,我无法在两个具有基因名称的单独列的组合上进行合并。 还有另一种方法可以实现这种合并吗?
一些示例dfs:
gene_pairs1 = [
set(['gene_A','gene_B']),
set(['gene_A','gene_C']),
set(['gene_D','gene_A'])
]
df1 = pd.DataFrame({'r_name': ['r1','r2','r3'], 'gene_pair': gene_pairs1})
gene_pairs2 = [
set(['gene_A','gene_B']),
set(['gene_F','gene_A']),
set(['gene_C','gene_A'])
]
df2 = pd.DataFrame({'function': ['f1','f2','f3'], 'gene_pair': gene_pairs2})
pd.merge(df1,df2,how='inner',on=['gene_pair'])
我想输入“ r1”与“ f1”对齐,而“ r2”与“ f3”对齐。
最后非常简单:我使用了Frozenset,而不是set。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.