如何在熊猫中使用带有多索引的地图?

远足者:

我有一个数据表,其中包含各种基因组位置的数据。这些位置以3元组(“染色体”,“ srand”,位置)表示,我已经将其转换为多索引。我的目标是查找有关每个位置的各种信息,并将其添加到表中(例如基因名称等)。我可以使用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-从字典向数据框添加新列

我有一个查询信息字典,其中包含与多索引相对应的三元组键。如何将这些数据添加为新列?

gene_d = {('chrom1', '-', 1234) : 'geneA', ('chrom1', '+', 5678): 'geneB', 
    ('chrom1', '+', 9876): 'geneC', ('chrom2', '+', 13579): 'geneD',
    ('chrom2', '+', 8497): 'geneE', ('chrom2', '-', 98765): 'geneF', 
    ('chrom2', '-', 76856): 'geneG'}

我已经尝试过地图,但似乎无法弄清楚如何使其与多索引一起使用以产生以下结果:

                                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
瓦沙里:

向量化方法:

df['gene'] = df.index #you get the index as tuple
df['gene'] = df['gene'].map(gene_d)
df = df.set_index('gene', append=True)

产生的df:

                                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

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何在熊猫数据框索引中使用地图

如何在熊猫中使用多索引迭代系列

如何在Mathematica中使用带有NIntegrate的索引?

如何在熊猫中包含带有多索引过滤器的条件?

熊猫,如何使用带有多索引数据框的子集dropna值?

如何在scala中创建带有索引键的地图?

当使用带有辅助参数(多对多)的Relationship()时,如何在SQLAlchemy中使用order_by?

如何在带有地图的 ggplot2 中使用 for 循环?

如何在python熊猫中使用带有bool的查询功能?

如何在熊猫中使用groupby创建索引列

如何在熊猫中使用Excel的索引/匹配功能

如何在熊猫中使用通配符重命名多列

如何在熊猫的多列中使用熔解功能?

如何在R中使用带有非数字索引的循环

如何在Jetbrains IDE(IntelliJ IDEA)中使用多光标插入带有单词的递增数字?

如何在python中使用带有多文件模块的unittest

如何在熊猫中创建多索引

如何在熊猫中合并多索引

Clickhouse:如何在Clickhouse中使用“数据跳过索引”和“带有数据跳过索引的操作”功能?

如何在具有不同索引级别的熊猫中合并多索引?

如何使用熊猫多索引行

带有多索引熊猫数据框的条形图

带有多个数据框的熊猫中的多索引

如何在熊猫数据框中使用NaN替换带有附加在符号末尾的符号的值

如何在带有列表值的熊猫列中使用表示 np.where 中条件的变量?

如何在带有SAI索引的TEXT列上使用CONTAINS?

如何在熊猫多索引数据框中绘制所有命名的列?

如何在Matlab中使用3D直方图对带有计数的数据索引进行标记

如何在熊猫中合并带有标题名称的索引?