2016-04-28 28 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]}) 

Sto cercando di unire i due frame di dati utilizzando i tasti dello df1. Penso che dovrei usare pd.merge per questo, ma come posso dire ai panda di inserire i valori nella colonna b di df2 nella colonna a di df1. Questa è l'uscita che sto cercando di realizzare:come unire due frame di dati con nomi di colonne diversi nei panda? - 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 

risposta

9

Basta usare concat e rename la colonna per df2 modo che sia allineato:

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 

Allo stesso modo è possibile utilizzare merge ma avresti bisogno di rinominare la colonna come sopra:

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

Come sempre, funziona perfettamente :) Grazie ancora per il vostro aiuto! – HappyPy

+0

Come parte a parte non esiste un metodo per farlo usando più colonne e "unisci" poiché diventa disordinato e ambiguo – EdChum

Problemi correlati