1

frame的stack函数可以这样转一个数据框

     cola colb      colc      
1 -> 10   <missing> aaa       
3 -> 20   5.5       bb        
5 -> 30   <missing> <missing> 
6 -> 40   <missing> ccc 

进入

     Row Column Value 
0 -> 1   cola   10    
1 -> 1   colc   aaa   
2 -> 3   cola   20    
3 -> 3   colb   5.5   
4 -> 3   colc   bb    
5 -> 5   cola   30    
6 -> 6   cola   40    
7 -> 6   colc   ccc  

然而,通常需要使用其中一个列值和另一列的标题作为新列的连接键,同时进行反透视。我怎样才能达到这样的结果:

0 -> 10   colb   <missing>    
1 -> 10   colc   aaa   
2 -> 20   colb   5.5    
3 -> 20   colc   bb   
4 -> 30   colb   <missing>    
5 -> 30   colc   <missing>        
6 -> 40   colb   <missing>            
7 -> 40   colc   ccc  

原来的 cola 的值和 colb 和 colc 的列标题已经成为指向 colb 值和 colc 值的组合键。

如何使用 Deedle 实现这一目标?

4

1 回答 1

1

我不认为我们有任何内置函数可以在 Deedle 中自动执行此操作,但您可以通过遍历框架的行然后遍历列来做到这一点:

假设f是您问题中的示例输入帧,以下应该可以解决问题:

[ for r in f.Rows.Values do
    for c in r.Keys do
      if c <> "cola" then 
        yield r.Get("cola"), c, r.TryGet(c) ]
|> Frame.ofRecords
于 2014-10-31T11:40:48.590 回答