2016-04-28 17 views
5
df1 = pd.DataFrame({'a':[1,2,3],'x':[4,5,6],'y':[7,8,9]}) 
df2 = pd.DataFrame({'b':[10,11,12],'x':[13,14,15],'y':[16,17,18]}) 

Próbuję scalić dwie ramki danych za pomocą klawiszy z df1. Myślę, że powinienem użyć do tego celu pd.merge, ale jak mogę powiedzieć pandom, aby umieściły wartości w kolumnie b z df2 w kolumnie a z df1. To jest wyjście usiłuję osiągnąć:jak scalić dwie ramki danych z różnymi nazwami kolumn w pandach? - python

a x y 
0 1 4 7 
1 2 5 8 
2 3 6 9 
3 10 13 16 
4 11 14 17 
5 12 15 18 

Odpowiedz

9

Wystarczy użyć concat i rename kolumna dla df2 więc wyrówna:

In [92]: 
pd.concat([df1,df2.rename(columns={'b':'a'})], ignore_index=True) 

Out[92]: 
    a x y 
0 1 4 7 
1 2 5 8 
2 3 6 9 
3 10 13 16 
4 11 14 17 
5 12 15 18 

podobnie można użyć merge ale trzeba by zmienić nazwę kolumna jak wyżej:

In [103]: 
df1.merge(df2.rename(columns={'b':'a'}),how='outer') 

Out[103]: 
    a x y 
0 1 4 7 
1 2 5 8 
2 3 6 9 
3 10 13 16 
4 11 14 17 
5 12 15 18 
+0

Jak zawsze działa idealnie :) Jeszcze raz dziękuję za pomoc! – HappyPy

+0

Na marginesie nie ma metody, aby to zrobić, używając wielu kolumn i "scalania", ponieważ staje się chaotyczny i niejednoznaczny – EdChum