2015-05-14 59 views
1

是否可以讓傳遞給values參數的列按行定位?這個問題的一個例子,我有:將pivot_table值移動到行

import datetime 

df = pd.DataFrame({'A': ['one', 'one', 'two', 'three'] * 6, 
        'B': ['A', 'B', 'C'] * 8, 
        'C': ['foo', 'foo', 'foo', 'bar', 'bar', 'bar'] * 4,        
        'D': np.random.randn(24),        
        'E': np.random.randn(24),        
        'F': [datetime.datetime(2013, i, 1) for i in range(1, 3)] * 12 
        }) 

這將產生以下數據框:

 A B C   D   E   F 
0  one A foo -0.152738 2.407996 2013-01-01 
1  one B foo -1.113901 0.597699 2013-02-01 
2  two C foo -0.587265 -0.878725 2013-03-01 
3 three A bar -0.734618 -0.252295 2013-04-01 
4  one B bar 0.359421 1.181750 2013-05-01 
5  one C bar -0.303491 0.473419 2013-06-01 
6  two A foo -0.275638 0.360602 2013-07-01 

應用pivot_table

>>> df.pivot_table(index=['A','B','C'], columns='F', values=['D','E']) 

        D      E   
F   2013-01-01 2013-02-01 2013-01-01 2013-02-01 
A  B C            
one A bar  NaN 0.878219  NaN -0.004981 
     foo -0.164395  NaN -0.254941  NaN 
     B bar 1.239046  NaN 1.265536  NaN 
     foo  NaN 0.181584  NaN 0.449861 
     C bar  NaN -0.823104  NaN -0.317757 
     foo -1.784723  NaN 0.169650  NaN 
three A bar  NaN 1.228297  NaN 0.467856 
     B foo  NaN 0.065234  NaN 0.061998 
     C bar  NaN 0.738302  NaN 0.908946 
two A foo -0.227953  NaN -1.067442  NaN 
     B bar 0.336351  NaN -0.522268  NaN 
     C foo -0.279180  NaN 0.335666  NaN 

我想列d,E & F到出現在MultiIndex行下,只保留列的日期。

+0

對不起你在找'df.pivot_table(指數= [ 'A', 'B', 'C'],列= 'F',值= [ 'd', 'E', 'F'])。Swaplevel爲(0,1,軸= 1)'? – EdChum

回答

1

堆棧的第一級:

>>> df.pivot_table(index=['A','B','C'], columns='F', values=['D','E']).stack(0) 

F    2013-01-01 2013-02-01 
A  B C        
one A bar D   NaN -0.326106 
      E   NaN -0.882319 
     foo D 0.147015   NaN 
      E -0.121944   NaN 
     B bar D 0.133723   NaN 
      E 0.182735   NaN 
     foo D   NaN 0.158913 
      E   NaN 0.365275 
     C bar D   NaN 0.495230 
      E   NaN 1.098515 
     foo D -0.624333   NaN 
      E 0.214979   NaN 
three A bar D   NaN 0.101431 
      E   NaN -0.352368 
     B foo D   NaN 0.405091 
      E   NaN 0.389888 
     C bar D   NaN 0.804457 
      E   NaN -0.572397 
two A foo D 0.127069   NaN 
      E 0.105038   NaN 
     B bar D -1.052195   NaN 
      E 0.728630   NaN 
     C foo D -0.643464   NaN 
      E -0.440381   NaN