2017-07-15 98 views
1

我有一些分析输出(解析成熊猫DataFrame),需要一些后处理。下面是数据框的样子:用一个当前是索引的值替换pandas DataFrame中的字符串。

        1   2    3   4  
index   GeneSymbol              
11746909_a_at A1CF  11736238_a_at 0.038230 11724734_at 0.024966 
11736238_a_at ABCA5  11746909_a_at 0.038230 11724734_at 0.024771 
11724734_at ABCB8  11746909_a_at 0.024966 11736238_a_at 0.024771 
11723976_at ABCC8  11746909_a_at 0.017006 11736238_a_at 0.046125 
11718612_a_at ABCD4  11746909_a_at 0.014982 11736238_a_at 0.050172 

这里,我们有一个双向的多指标,外指数是唯一的ID和内部索引与ID相关联的符号。然后列$ 1,...,n $在ID和数值之间交替(给出相关性的强度)。这些列中的每个ID都位于索引中。我的问题是:用适当的符号替换无用信息ID的最佳策略是什么?

例如,在输出表中的第一行是这样的:提前

        1   2    3   4  
index   GeneSymbol              
11746909_a_at A1CF  ABCA5   0.038230 ABCB8  0.024966 
11736238_a_at ABCA5  11746909_a_at 0.038230 11724734_at 0.024771 
11724734_at ABCB8  11746909_a_at 0.024966 11736238_a_at 0.024771 
11723976_at ABCC8  11746909_a_at 0.017006 11736238_a_at 0.046125 
11718612_a_at ABCD4  11746909_a_at 0.014982 11736238_a_at 0.050172 

感谢

回答

1

可以使用replace通过Series创建由reset_index

df = df.replace(df.reset_index(level=1)['GeneSymbol']) 
print (df) 
           1   2  3   4 
index   GeneSymbol         
11746909_a_at A1CF  ABCA5 0.038230 ABCB8 0.024966 
11736238_a_at ABCA5  A1CF 0.038230 ABCB8 0.024771 
11724734_at ABCB8  A1CF 0.024966 ABCA5 0.024771 
11723976_at ABCC8  A1CF 0.017006 ABCA5 0.046125 
11718612_a_at ABCD4  A1CF 0.014982 ABCA5 0.050172 

另一种解决方案,由list of tuples创建,由Index.values创建:

df = df = df.replace(dict(df.index.values)) 
print (df) 
           1   2  3   4 
index   GeneSymbol         
11746909_a_at A1CF  ABCA5 0.038230 ABCB8 0.024966 
11736238_a_at ABCA5  A1CF 0.038230 ABCB8 0.024771 
11724734_at ABCB8  A1CF 0.024966 ABCA5 0.024771 
11723976_at ABCC8  A1CF 0.017006 ABCA5 0.046125 
11718612_a_at ABCD4  A1CF 0.014982 ABCA5 0.050172 
+1

非常优雅,谢谢。 – CiaranWelsh

相关问题