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
Post a Comment