2017-07-26 67 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()