Comment fusionner des DataFrames Pandas sur plusieurs colonnes
Souvent, vous souhaiterez peut-être fusionner deux DataFrames pandas sur plusieurs colonnes. Heureusement, cela est facile à faire en utilisant la fonction pandas merge() , qui utilise la syntaxe suivante :
pd.merge(df1, df2, left_on=['col1','col2'], right_on = ['col1','col2'])
Ce tutoriel explique comment utiliser cette fonction en pratique.
Exemple 1 : Fusionner plusieurs colonnes avec des noms différents
Supposons que nous ayons les deux DataFrames pandas suivants :
import pandas as pd #create and view first DataFrame df1 = pd.DataFrame({'a1': [0, 0, 1, 1, 2], 'b': [0, 0, 1, 1, 1], 'c': [11, 8, 10, 6, 6]}) print(df1) a1 b c 0 0 0 11 1 0 0 8 2 1 1 10 3 1 1 6 4 2 1 6 #create and view second DataFrame df2 = pd.DataFrame({'a2': [0, 1, 1, 1, 3], 'b': [0, 0, 0, 1, 1], 'd': [22, 24, 25, 33, 37]}) print(df2) a2 b d 0 0 0 22 1 1 0 24 2 1 0 25 3 1 1 33 4 3 1 37
Le code suivant montre comment effectuer une jointure gauche en utilisant plusieurs colonnes des deux DataFrames :
pd.merge(df1, df2, how='left', left_on=['a1', 'b'], right_on = ['a2','b']) a1 b c a2 d 0 0 0 11 0.0 22.0 1 0 0 8 0.0 22.0 2 1 1 10 1.0 33.0 3 1 1 6 1.0 33.0 4 2 1 6 NaN NaN
Exemple 2 : fusionner plusieurs colonnes portant les mêmes noms
Supposons que nous ayons les deux DataFrames pandas suivants avec les mêmes noms de colonnes :
import pandas as pd #create DataFrames df1 = pd.DataFrame({'a': [0, 0, 1, 1, 2], 'b': [0, 0, 1, 1, 1], 'c': [11, 8, 10, 6, 6]}) df2 = pd.DataFrame({'a': [0, 1, 1, 1, 3], 'b': [0, 0, 0, 1, 1], 'd': [22, 24, 25, 33, 37]})
Dans ce cas, nous pouvons simplifier l’utilisation de on = [‘a’, ‘b’] puisque les noms de colonnes sont les mêmes dans les deux DataFrames :
pd.merge(df1, df2, how='left', on=['a', 'b']) a b c d 0 0 0 11 22.0 1 0 0 8 22.0 2 1 1 10 33.0 3 1 1 6 33.0 4 2 1 6 NaN
Ressources additionnelles
Comment fusionner deux DataFrames Pandas sur l’index
Comment empiler plusieurs DataFrames Pandas