2016-07-13 6 views
0

Betrachten Sie diese zwei Datenrahmen:Wie kann ich anhängen einen Datenrahmen zu einem bestimmten Niveau eines anderen Datenrahmens

df1 = pd.DataFrame(np.arange(16).reshape(4, 4), 
        pd.MultiIndex.from_product([['a', 'b'], ['A', 'B']]), 
        ['One', 'Two', 'Three', 'Four']) 

df2 = pd.DataFrame(np.arange(8).reshape(2, 4), 
        ['C', 'D'], 
        ['One', 'Two', 'Three', 'Four']) 

print df1 

    One Two Three Four 
a A 0 1  2  3 
    B 4 5  6  7 
b A 8 9  10 11 
    B 12 13  14 15 

print df2 

    One Two Three Four 
C 0 1  2  3 
D 4 5  6  7 

I df2-df1, wo die erste Stufe des df1.index ist 'a' angehängt werden soll.

 One Two Three Four 
a A 0 1  2  3 
    B 4 5  6  7 
    C 0 1  2  3 
    D 4 5  6  7 
b A 8 9  10 11 
    B 12 13  14 15 

Antwort

0

Zuerst I neu zuzuweisen den Index mit einem df2pd.MultiIndex mit der gewünschten Position in der ersten Ebene des Index in dem neuen Index.

df2.index = pd.MultiIndex.from_product([['a'], df2.index]) 

dann concat

pd.concat([df1, df2]).sort_index() 

    One Two Three Four 
a A 0 1  2  3 
    B 4 5  6  7 
    C 0 1  2  3 
    D 4 5  6  7 
b A 8 9  10 11 
    B 12 13  14 15 
Verwandte Themen