我有一个不同基因位置的数据表。位置用三元组表示(‘染色体’,‘srand’,position),我已经把它变成了一个多索引。我的目标是查找每个位置的各种信息并将其添加到表中(例如基因名等),我可以使用pybedtools来完成这项工作。在
df = pd.DataFrame(data={'A':range(1,8), 'B':range(1,8), 'C': range(1,8)},
index=pd.MultiIndex.from_tuples([('chrom1', '-', 1234), ('chrom1', '+', 5678),
('chrom1', '+', 9876), ('chrom2', '+', 13579), ('chrom2', '+', 8497), ('chrom2', '-', 98765),
('chrom2', '-', 76856)]))
df.index.rename(['chrom','strand','abs_pos'], inplace=True)
A B C
chrom strand abs_pos
chrom1 - 1234 1 1 1
+ 5678 2 2 2
9876 3 3 3
chrom2 + 13579 4 4 4
8497 5 5 5
- 98765 6 6 6
76856 7 7 7
我的问题是向具有多索引的数据框添加列。如果没有多索引,pandas - add new column to dataframe from dictionary
我有一个查找信息的字典,它有对应于多索引的三元组键。如何将此数据添加为新列?在
^{pr2}$我试过map,但似乎不知道如何使它与多索引一起工作,从而得出以下结果:
A B C
chrom strand abs_pos gene
chrom1 - 1234 geneA 1 1 1
+ 5678 geneB 2 2 2
9876 geneC 3 3 3
chrom2 + 13579 geneD 4 4 4
8497 geneE 5 5 5
- 98765 geneF 6 6 6
76856 geneG 7 7 7
将gene_d制作成一个数据帧:
给它一个多重指数:
^{pr2}$与原始数据框连接:
清理一下:
这是一个很直接的循环。注意,如果要循环,那么
dict
可能不是合适的数据结构,可能只是元组的列表?在矢量化方法:
结果df:
^{pr2}$相关问题 更多 >
编程相关推荐