python - Merging multiindex dataframe in pandas -


i have 2 similar data frames structured :

ind = pd.multiindex.from_product([['day 1','day 2'],['d1','d2'],['mean','stdev','sterr']], names = ['interval','device','stats']) df =  pd.dataframe({'col1':[1,2,3,4,5,6,7,8,9,10,11,12]}, index = ind) print(df)                         col1 interval device stats       day 1    d1     mean      1                 stdev     2                 sterr     3          d2     mean      4                 stdev     5                 sterr     6 day 2    d1     mean      7                 stdev     8                 sterr     9          d2     mean     10                 stdev    11                 sterr    12  ind2 = pd.multiindex.from_product([['day 1','day 2'],['d1','d2'],['ratio']], names = ['interval','device','stats']) df2 =  pd.dataframe({'col1':[100,200,300,400]}, index = ind2) print(df2)                         col1 interval device stats       day 1    d1     ratio   100          d2     ratio   200 day 2    d1     ratio   300          d2     ratio   400 

i'm trying merge them :

                       col1 interval device stats       day 1    d1     mean      1                 stdev     2                 sterr     3                 ratio   100          d2     mean      4                 stdev     5                 sterr     6                 ratio   200 day 2    d1     mean      7                 stdev     8                 sterr     9                 ratio   300          d2     mean     10                 stdev    11                 sterr    12                 ratio   400 

i tried bunch of different things using join, concat, , merge closest i've been able using df3 = pd.concat([df, df2], axis=1). unfortunately gives me :

                          col1  col1 interval device stats             day 1    d1     mean      1   nan                 ratio   nan   100                 stdev     2   nan                 sterr     3   nan          d2     mean      4   nan                 ratio   nan   200                 stdev     5   nan                 sterr     6   nan day 2    d1     mean      7   nan                 ratio   nan   300                 stdev     8   nan                 sterr     9   nan          d2     mean     10   nan                 ratio   nan   400                 stdev    11   nan                 sterr    12   nan 

don't use axis=1 when using concat, means appending column-wise, not row-wise. want axis=0 row-wise, happens default, don't need specify it:

df3 = pd.concat([df, df2]).sort_index() 

the resulting output:

                       col1 interval device stats       day 1    d1     mean      1                 ratio   100                 stdev     2                 sterr     3          d2     mean      4                 ratio   200                 stdev     5                 sterr     6 day 2    d1     mean      7                 ratio   300                 stdev     8                 sterr     9          d2     mean     10                 ratio   400                 stdev    11                 sterr    12 

Comments

Popular posts from this blog

sql server - Cannot query correctly (MSSQL - PHP - JSON) -

php - trouble displaying mysqli database results in correct order -

C++ Linked List -