2016-04-29 26 views
1

以下數據:重塑表 - 條目列鑑於新列

 Symbol  Date  Type   Value 
518   ZW 2008-01-02  cm 1.204330e+09 
519   ZW 2008-01-02 cm_next 1.209600e+09 
520   ZW 2008-01-02  p&l 0.000000e+00 
521   ZW 2008-01-02 position 0.000000e+00 
522   ZW 2008-01-02 rolldate 1.203466e+09 
523   ZW 2008-01-02  value 3.114788e+04 
524   ZW 2008-01-02  vola 6.256606e+02 
1046  ZW 2008-01-03  cm 1.204330e+09 
1047  ZW 2008-01-03 cm_next 1.209600e+09 
1048  ZW 2008-01-03  p&l 0.000000e+00 
1049  ZW 2008-01-03 position 0.000000e+00 
1050  ZW 2008-01-03 rolldate 1.203466e+09 
1051  ZW 2008-01-03  value 3.202738e+04 
1052  ZW 2008-01-03  vola 6.338274e+02 
1574  ZW 2008-01-04  cm 1.204330e+09 
1575  ZW 2008-01-04 cm_next 1.209600e+09 
1576  ZW 2008-01-04  p&l 0.000000e+00 
1577  ZW 2008-01-04 position 0.000000e+00 
1578  ZW 2008-01-04 rolldate 1.203466e+09 
1579  ZW 2008-01-04  value 3.162559e+04 
1580  ZW 2008-01-04  vola 6.357563e+02 
2102  ZW 2008-01-07  cm 1.204330e+09 
2103  ZW 2008-01-07 cm_next 1.209600e+09 
2104  ZW 2008-01-07  p&l 0.000000e+00 
2105  ZW 2008-01-07 position 0.000000e+00 
2106  ZW 2008-01-07 rolldate 1.203466e+09 
2107  ZW 2008-01-07  value 3.066630e+04 
2108  ZW 2008-01-07  vola 6.381839e+02 

我想reshape此表的格式如下:

Symbol | Date | cm | cm_next | rolldate | p&l | position | [etc..] 

即我所有的類型都應該是列幷包含每個日期的相應值。

我試過df.pivot() & df.unstack()但是,唉,我想要的是超出了他們的範圍,並不完全是我所尋找的,從我的理解。

我可以提取在Type列每種類型的數據,並把它粘到一起 - 但是這似乎是一個相當原始的方法。 有沒有更好的,更多pandaic的方式來實現這一目標?

回答

1

我想你需要pivot_table,但數據由np.mean(默認aggfunc=np.mean)與rename_axis(新中pandas0.18.0)和reset_index彙總:

print df.pivot_table(index=['Symbol','Date'], columns='Type', values='Value') 
     .rename_axis(None, axis=1) 
     .reset_index() 

    Symbol  Date   cm  cm_next p&l position  rolldate \ 
0  ZW 2008-01-02 1.204330e+09 1.209600e+09 0.0  0.0 1.203466e+09 
1  ZW 2008-01-03 1.204330e+09 1.209600e+09 0.0  0.0 1.203466e+09 
2  ZW 2008-01-04 1.204330e+09 1.209600e+09 0.0  0.0 1.203466e+09 
3  ZW 2008-01-07 1.204330e+09 1.209600e+09 0.0  0.0 1.203466e+09 

     value  vola 
0 31147.88 625.6606 
1 32027.38 633.8274 
2 31625.59 635.7563 
3 30666.30 638.1839 
+0

你就像一個走'pandas'手冊,夥計。這正是我需要的。我會接受答案(仍然有時間限制)。乾杯! – nlsdfnbch

+0

謝謝。美好的一天。 – jezrael