Search code examples
pythonpython-2.7pandasdataframemulti-level

How to create a multilevel dataframe in pandas?


Given two different df's:

'A'

            a  b         
2016-11-21  2  1
2016-11-22  3  4
2016-11-23  5  2 
2016-11-24  6  3 
2016-11-25  6  3

'B'

            a  b         
2016-11-21  3  0
2016-11-22  1  0
2016-11-23  1  6 
2016-11-24  1  5 
2016-11-25  0  2

How can I create a 'multilevel' dataframe of this shape:

'C'

            A     B
            a  b  a  b           
2016-11-21  2  1  3  0
2016-11-22  3  4  1  0
2016-11-23  5  2  1  6
2016-11-24  6  3  1  5
2016-11-25  6  3  0  2

*index is a 'datatime' object

Thanks


Solution

  • One option is to use MultiIndex() to construct the columns level for A and B and then concatenate them:

    import pandas as pd
    A.columns = pd.MultiIndex.from_product([['A'], A.columns])
    B.columns = pd.MultiIndex.from_product([['B'], B.columns])
    pd.concat([A, B], axis = 1)
    
    #           A       B
    #           a   b   a   b
    #2016-11-21 2   1   3   0
    #2016-11-22 3   4   1   0
    #2016-11-23 5   2   1   6
    #2016-11-24 6   3   1   5
    #2016-11-25 6   3   0   2