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]})
J'essaye de fusionner les deux trames de données en utilisant les clés du df1
. Je pense que je devrais utiliser pd.merge
pour cela, mais comment puis-je dire à pandas de placer les valeurs dans la colonne b
de df2
dans la colonne a
de df1
. Voici la sortie que j'essaie d'atteindre:
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
Utilisez simplement concat
et rename
la colonne pour df2
donc il aligne:
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
de même, vous pouvez utiliser merge
mais vous devez renommer la colonne comme ci-dessus:
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
Utilisez numpy pour concaténer les cadres de données, vous n'avez donc pas à renommer toutes les colonnes (ou ignorer explicitement les index). np.concatenate
fonctionne également sur un nombre arbitraire de trames de données.
df = pd.DataFrame( np.concatenate( (df1.values, df2.values), axis=0 ) )
df.columns = [ 'a', 'x', 'y' ]
df