pandas - how to groupby a Multi Index time series data? -


say generate df below

testdf = pd.dataframe(np.random.randn(4,4),index= pd.date_range("20170101",periods=4),columns =list("abcd"))  testdf out[40]:                             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 

i create mulit-index below

index = pd.multiindex.from_arrays([list("abcd"),("one","one","two","two")],names=['letter','number'])  testdf.columns = index  testdf out[44]:  letter                     b         c         d number           1       1       2       2 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 

now how can group number ?

i tried group below.

testdf.groupby('number') 

which throws error below.

keyerror: 'number' 

use groupby parameter axis=1 group columns, define level , add aggregate function sum, mean:

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

or:

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

Comments

Popular posts from this blog

python - Selenium remoteWebDriver (& SauceLabs) Firefox moseMoveTo action exception -

html - How to custom Bootstrap grid height? -

transpose - Maple isnt executing function but prints function term -