2015-09-09 16 views
5

Mam dwie ramki danych, które chciałbym scalić. DF1 posiada tę formęRozwiń i połącz panda DataFames

index c1 c2 
a1 1 2 
a1 2 1 
a1 3 1 
b1 5 2 
b1 4 7 

DF2 jest inny zestaw danych, który dzieli skondensowaną wersję indeksu

index c3 c4 
a1  9 10 
b1  7 8 

Chciałbym wypełnić DF1 z danymi z df2

index c1 c2 c3 c4 
a1 1 2 9 10 
a1 2 1 9 10 
a1 3 1 9 10 
b1 5 2 7 8 
b1 4 7 7 8 

Jaki jest najbardziej wydajny sposób na zrobienie tego?

Odpowiedz

3

Chcesz zrobić outer merge i ustawić left_index=True, right_index=True:

In [65]: 
DF1.merge(DF2, how='outer', left_index=True, right_index=True) 

Out[65]: 
     c1 c2 c3 c4 
index     
a1  1 2 9 10 
a1  2 1 9 10 
a1  3 1 9 10 
b1  5 2 7 8 
b1  4 7 7 8 

zewnętrzna join będzie działać również:

In [66]: 
DF1.join(DF2, how='outer') 

Out[66]: 
     c1 c2 c3 c4 
index     
a1  1 2 9 10 
a1  2 1 9 10 
a1  3 1 9 10 
b1  5 2 7 8 
b1  4 7 7 8 
+0

doskonały, dzięki – taylormade201