Pandas : comment fusionner des DataFrames avec LEFT, RIGHT, OUTER et INNER ?

Si vous avez installé la librairie Pandas sur votre ordinateur, vous pouvez maintenant utiliser dans votre programme la classe DataFrame. Un DataFrame représente un ensemble de données issues d'une source. On peut par exemple en créer à partir de tables d'une base de données. Il est possible de fusionner des DataFrames entre eux. On utilise pour cela la méthode "merge()" liée à un DataFrame. Cette méthode prend le DataFrame avec lequel fusionner ainsi qu'un ensemble de paramètres qui vont permettre de contrôler précisément la fusion.

Le premier paramètre est le paramètre "how". Il définit le type de fusion à réaliser. Par défaut, la fusion est de type "INNER", c’est-à-dire que seules les lignes ayant des valeurs communes dans les identifiants sélectionnés seront prises. Il existe également d'autres types de fusions. Avec le type "OUTER", toutes les lignes des deux DataFrames sont récupérées. Pour les lignes qui n'ont pas d'équivalent dans l'autre table, la valeur "NaN" sera définie. Avec le type "LEFT", toutes les colonnes du DataFrame sur lequel la méthode est appelée sont récupérées. S'il n'existe pas de ligne correspondante dans la table en paramètre, les valeurs seront fixées à "NaN" pour ses colonnes. Le type "RIGHT" effectue le même traitement, mais en se basant sur le DataFrame en paramètre. Il est possible de choisir quelles colonnes on souhaite fusionner en les nommant entre des crochets à côté du nom du DataFrame.

L'autre paramètre important est le paramètre "on". Il définit le nom de la colonne sur laquelle va se baser la fusion. Si les colonnes de vos DataFrames n'ont pas le même nom, vous devez utiliser les paramètres "left_on" et "right_on" à la place. Tous ces paramètres acceptent un nom de colonne ou bien une liste avec plusieurs noms de colonnes, pour réaliser une fusion basée sur des colonnes multiples. Dans le cas d'une fusion à plusieurs colonnes, une nouvelle colonne d'identifiants sera créée, avec les valeurs qui ont été incluses lors de la fusion. Si vous souhaitez utiliser une des deux colonnes de clés comme clé de la table fusionnée, vous devez la définir comme index avant la fusion, avec la méthode "set_index()". Vous devez ensuite spécifier le paramètre "left_index" à "true" si vous avez choisi la colonne de la table pour laquelle vous appelez la méthode "merge()", ou bien le paramètre "right_index" pour la table en paramètre.

# Fusion simple
nouvelleDf = df1.merge(df2, on='key')
# Fusion de type OUTER avec uniquement certaines colonnes
nouvelleDf = df1['key', 'prenom', 'nom].merge(df2['key', 'adresse', 'ville'], on='key')
# Fusion de type 'LEFT' avec 2 colonnes
nouvelleDf = df1.merge(df2, how='left', left_on='df1_key', right_on='df2_key')
# Fusion avec index
df1_index = df1.set_index('def1_key')
nouvelleDf = df1.merge(df2, how='left', left_on='df1_key', right_on='df2_key')
Autour du même sujet

Python