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)
    Résultat du code

    Explication du code :

    Importation de la bibliothèque

    import pandas as pd

    Cette ligne importe la bibliothèque pandas sous l’alias pd, permettant la manipulation de données tabulaires.

    Création des DataFrames

    df1 = pd.DataFrame({'id': [1, 2, 3], 'ville': ['Paris', 'Lyon', 'Marseille'], 'nom': ['Alice', 'Bob', 'Charlie']})

    Ce DataFrame contient trois colonnes : id, ville et nom. Chaque ligne correspond à une personne identifiée par son ID, sa ville et son nom.

    df2 = pd.DataFrame({'id': [2, 3, 4], 'ville': ['Lyon', 'Marseille', 'Paris'], 'age': [24, 25, 30]})

    Le second DataFrame contient également un id et une ville pour chaque ligne, ainsi qu’un champ age.

    Fusion des DataFrames sur les colonnes 'id' et 'ville'

    df_merge = pd.merge(df1, df2, on=['id', 'ville'])

    Cette ligne réalise une fusion des deux DataFrames en utilisant à la fois les colonnes id et ville comme clés de correspondance.

    La méthode pd.merge() avec le paramètre on=['id', 'ville'] effectue une jointure interne (inner join) sur les paires de valeurs idville présentes dans les deux DataFrames.

    Seules les lignes ayant les mêmes valeurs de id et de ville dans les deux DataFrames sont conservées.

    Affichage du DataFrame fusionné

    print(df_merge)

    Cette ligne affiche le DataFrame fusionné contenant les colonnes id, ville, nom et age pour les correspondances trouvées.