2017-07-26 19 views
2

說我產生DF如下如何分組多索引時間序列數據?

testdf = pd.DataFrame(np.random.randn(4,4),index= pd.date_range("20170101",periods=4),columns =list("ABCD")) 

testdf 
Out[40]: 
        A   B   C   D 
2017-01-01 0.084624 -0.371352 -1.013843 -1.102199 
2017-01-02 0.390855 -0.519623 0.241092 -1.474969 
2017-01-03 0.129163 -0.183547 -1.333859 -0.864320 
2017-01-04 1.265360 -0.260505 0.633058 -0.077758 

然後我通過number創建一個多功能使用指數如下

index = pd.MultiIndex.from_arrays([list("ABCD"),("one","one","two","two")],names=['letter','number']) 

testdf.columns = index 

testdf 
Out[44]: 
letter    A   B   C   D 
number   one  one  two  two 
2017-01-01 0.084624 -0.371352 -1.013843 -1.102199 
2017-01-02 0.390855 -0.519623 0.241092 -1.474969 
2017-01-03 0.129163 -0.183547 -1.333859 -0.864320 
2017-01-04 1.265360 -0.260505 0.633058 -0.077758 

現在我怎麼能組?

我試着分組如下。

testdf.groupby('number') 

它引發下面的錯誤。

KeyError: 'number' 

回答

2

使用groupby與列參數axis=1爲組,定義級,然後添加聚合函數一樣summean

df = testdf.groupby(axis=1, level=1).sum() 

或者:

df = testdf.groupby(axis=1, level='number').sum()