我有一个关于各种基因组位置的数据表。这些位置表示为3元组(“染色体”、“srand”位置),我已将其转换为多索引。我的目标是查找关于每个位置的各种信息,并将其添加到表中(例如基因名等)。我可以使用pybedtools来完成这项工作
数据帧(数据={‘A’:范围(1,8),’B’:范围(1,8),’C’:范围(1,8)},
index=pd.MultiIndex.from_元组([(’chrom1’,’-‘,1234),(’chrom1’,’+’,5678),
(“chrom1″,”chrom2″,”chrom2″,”chrom2″,”chrom2”,,
(’chrom2’,’-‘,76856)])
df.index.rename([‘chrom’、’strand’、’abs_pos’],inplace=True)
A、B、C
铬绞线abs\U位置
色度1-12341
+ 5678 2 2 2
9876 3 3 3
铬2+135794
8497 5 5 5
– 98765 6 6 6
76856 7 7 7
我的问题是向具有多索引的数据帧添加列。在没有多索引的情况下,这似乎是直截了当的:pandas-从dictionary向dataframe添加新列
我有一个查找信息的字典,其中有对应于多索引的3元组键。如何将此数据添加为新列
gene_d={('chrom1','-',1234):'geneA',('chrom1','+',5678):'geneB',',
('chrom1','+',9876):'geneC',('chrom2','+',13579):'geneD',,
('chrom2','+',8497):'geneE',('chrom2','-',98765):'geneF',
('chrom2','-',76856):'geneG'}
我尝试了map,但似乎不知道如何让它与多索引一起工作,从而产生以下结果:
A B C
铬链abs_pos基因
chrom1-1234 geneA 1
+5678 geneB 2
9876基因3
chrom2+13579基因4
8497 geneE 5
-98765 geneF 6
76856日内瓦7
矢量化方法:
df['gene']=df.index#将索引作为元组获取
df['gene']=df['gene'].map(gene_d)
df=df.set_索引('gene',append=True)
结果df:
A B C
铬链abs_pos基因
chrom1-1234 geneA 1
+5678 geneB 2
9876基因3
chrom2+13579基因4
8497 geneE 5
-98765 geneF 6
76856日内瓦7