Search code examples
pythonjoinpandasmulti-index

Append two multiindexed pandas dataframes


Can you please help to append two multiindexed pandas dataframes? Trying to append df_future to df_current. COMPANY and DATE are the indexes.

df_current

                           VALUE
COMPANY     DATE            
            7/27/2015       1
A           7/28/2015       2
            7/29/2015       3
            7/30/2015       4
            7/27/2015       11
B           7/28/2015       12
            7/29/2015       13
            7/30/2015       14

df_future

                            VALUE
COMPANY     DATE            
A           8/1/2015        5
            8/2/2015        6
B           8/1/2015        15
            8/2/2015        16

Based on these dfs, want to see..

df_current_and_future

                            VALUE
COMPANY     DATE            
            7/27/2015       1
            7/28/2015       2
A           7/29/2015       3
            7/30/2015       4
            8/1/2015        5
            8/2/2015        6
            7/27/2015       11
            7/28/2015       12
B           7/29/2015       13
            7/30/2015       14
            8/1/2015        15
            8/2/2015        16

Solution

  • Use concat to concatenate the two DataFrames, and sort_index to reorder the first index level:

    In [167]: pd.concat([df_current, df_future]).sort_index()
    Out[167]: 
                       VALUE
    COMPANY DATE            
    A       7/27/2015      1
            7/27/2015     11
            7/28/2015      2
            7/29/2015      3
            7/30/2015      4
            8/1/2015       5
            8/2/2015       6
    B       7/28/2015     12
            7/29/2015     13
            7/30/2015     14
            8/1/2015      15
            8/2/2015      16
    

    Note: My original answer used sortlevel which is now deprecated. As firelynx shows, use sort_index instead.