Fusion sur plusieurs colonnes avec merge()
La fusion sur plusieurs colonnes avec merge() permet de combiner deux DataFrames en utilisant plusieurs colonnes communes comme clés de jointure. Vous pouvez spécifier une liste de colonnes à utiliser pour la fusion, ce qui permet une jointure plus précise entre les DataFrames. Cela est utile lorsque les colonnes individuelles ne suffisent pas pour identifier de manière unique les lignes correspondantes.
Fonctions :
-
merge(on=['col1', 'col2'])
La fonction pd.merge() permet de fusionner deux DataFrames sur plusieurs colonnes en spécifiant une liste de colonnes dans l'argument on. Cela permet de joindre les DataFrames sur une combinaison de plusieurs clés. Cette fonctionnalité est utile lorsque les colonnes seules ne sont pas uniques pour effectuer une fusion, mais que la combinaison de plusieurs colonnes peut être utilisée pour cela.
Importation :
import pandas as pd
Attributs :
Paramètre Description on
Une liste de colonnes sur lesquelles la fusion sera effectuée (doit exister dans les deux DataFrames). how
'inner'
(par défaut) : jointure interne, garde uniquement les lignes communes entre les deux DataFrames.'outer'
: jointure externe, garde toutes les lignes, avec NaN pour les valeurs manquantes.'left'
: jointure à gauche, garde toutes les lignes du DataFrame de gauche.'right'
: jointure à droite, garde toutes les lignes du DataFrame de droite.
left_on
Spécifie la ou les colonnes du DataFrame de gauche sur lesquelles la fusion doit être effectuée (si elles diffèrent du paramètre on
).right_on
Spécifie la ou les colonnes du DataFrame de droite sur lesquelles la fusion doit être effectuée (si elles diffèrent du paramètre on
).suffixes
Un tuple qui ajoute un suffixe aux colonnes avec des noms communs dans les DataFrames, pour éviter les conflits de nom. Exemple de code :
import pandas as pd # Exemple de DataFrames df1 = pd.DataFrame({ 'id': [1, 2, 3], 'ville': ['Paris', 'Lyon', 'Marseille'], 'nom': ['Alice', 'Bob', 'Charlie'] }) df2 = pd.DataFrame({ 'id': [2, 3, 4], 'ville': ['Lyon', 'Marseille', 'Paris'], 'age': [24, 25, 30] }) # Fusion des DataFrames sur les colonnes 'id' et 'ville' df_merge = pd.merge(df1, df2, on=['id', 'ville']) # Affichage du DataFrame fusionné print(df_merge)
Explication du code :
- Création des DataFrames :
df1
contient les colonnesid
,ville
, etnom
.df2
contient les colonnesid
,ville
, etage
.
- Fusion avec
pd.merge()
sur plusieurs colonnes :- Nous utilisons
pd.merge(df1, df2, on=['id', 'ville'])
pour fusionner les deux DataFrames en utilisant à la fois les colonnesid
etville
comme clés communes. La fusion sera effectuée uniquement pour les lignes où les valeurs de ces deux colonnes correspondent dans les deux DataFrames.
- Nous utilisons
- Affichage : Le DataFrame résultant contient les colonnes
id
,ville
,nom
, etage
pour les lignes ayant la même valeur deid
etville
dans les deux DataFrames.
📍 Remarques
-
Types de jointures :
Comme pour une fusion sur une seule colonne, vous pouvez spécifier le type de jointure à l'aide de l'argumenthow
. Par exemple :- Jointure interne (
how='inner'
) : Garde uniquement les lignes avec des correspondances dans les deux DataFrames pour les colonnes spécifiées. - Jointure externe (
how='outer'
) : Garde toutes les lignes des deux DataFrames, avec des NaN pour celles qui ne trouvent pas de correspondance dans l'autre DataFrame. - Jointure gauche (
how='left'
) : Garde toutes les lignes du DataFrame gauche. - Jointure droite (
how='right'
) : Garde toutes les lignes du DataFrame droit.
- Jointure interne (
-
Gérer des colonnes de noms identiques : Si les DataFrames ont des colonnes avec les mêmes noms autres que celles sur lesquelles vous effectuez la fusion, vous pouvez utiliser l'argument
suffixes
pour ajouter des suffixes aux colonnes afin de les différencier. - Fusion sur des colonnes non identiques : Si les colonnes que vous souhaitez utiliser pour la fusion ne portent pas le même nom dans les deux DataFrames, vous pouvez spécifier
left_on
etright_on
pour indiquer explicitement les colonnes à fusionner.