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 :

    1. Création des DataFrames :
      • df1 contient les colonnes id, ville, et nom.
      • df2 contient les colonnes id, ville, et age.
    2. 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 colonnes id et ville 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.
    3. Affichage : Le DataFrame résultant contient les colonnes id, ville, nom, et age pour les lignes ayant la même valeur de id et ville 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'argument how. 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.
    • 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 et right_on pour indiquer explicitement les colonnes à fusionner.