Utilisation de join() pour fusionner sur l’index

La méthode join() permet de fusionner des DataFrames en utilisant l’index comme clé de jointure. Contrairement à merge(), qui se base sur des colonnes spécifiques, join() permet de lier les DataFrames en alignant les indices. Cette méthode est idéale lorsque vous travaillez avec des DataFrames dont les indices sont significatifs et que vous souhaitez les combiner sans spécifier de colonnes de jointure explicites. Elle offre aussi la possibilité de réaliser des jointures left, right, outer, ou inner sur l’index, ce qui vous permet de choisir comment gérer les lignes manquantes.

Fonctions :

  • join()

    La méthode join() de pandas est utilisée pour fusionner des DataFrames en fonction de leur index. Elle peut également être utilisée pour fusionner un DataFrame avec un autre basé sur une colonne spécifiée de l'un des DataFrames. Elle est souvent utilisée lorsque vous voulez joindre des DataFrames sur leur index, mais peut aussi être utilisée pour joindre sur une colonne spécifique en utilisant l'argument on.

    Importation :

    import pandas as pd

    Attributs :

    Paramètre Description
    other Le DataFrame à fusionner avec l'objet courant.
    on La colonne ou l'index sur laquelle effectuer la fusion (utilisé lorsque vous joignez sur une colonne spécifique).
    how Le type de jointure à effectuer :
    • 'left' (par défaut) : jointure à gauche, garde toutes les lignes du DataFrame gauche.
    • 'right' : jointure à droite, garde toutes les lignes du DataFrame de droite.
    • 'outer' : jointure externe, garde toutes les lignes des deux DataFrames avec NaN pour les lignes qui n'ont pas de correspondance.
    • 'inner' : jointure interne, garde uniquement les lignes avec des correspondances dans les deux DataFrames.
    Attribut Description
    lsuffix Suffixe ajouté aux colonnes du DataFrame gauche en cas de conflits de noms.
    rsuffix Suffixe ajouté aux colonnes du DataFrame droit en cas de conflits de noms.

    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']
    }).set_index('id')  # Définir 'id' comme index
    
    df2 = pd.DataFrame({
        'age': [24, 25, 30]
    }, index=[1, 2, 3])  # 'id' est l'index
    
    # Fusion avec `join()` sur l'index
    df_joined = df1.join(df2)
    
    # Affichage du DataFrame fusionné
    print(df_joined)

    Explication du code :

    1. Création des DataFrames :

      • df1 contient les colonnes id, ville, et nom, et id est défini comme l'index.
      • df2 contient une colonne age, et l'index est également basé sur id.
    2. Fusion avec join() :

      • La méthode df1.join(df2) fusionne les deux DataFrames en utilisant l'index commun id. Cela permet d'ajouter la colonne age de df2 à df1 pour les lignes dont les index correspondent.
    3. Affichage : Le DataFrame résultant contient les colonnes ville, nom, et age, avec les valeurs fusionnées.

    📍 Remarques

    • Jointure interne par défaut : Par défaut, join() utilise une jointure interne (type how='inner'), c'est-à-dire qu'elle ne garde que les lignes ayant des index correspondants dans les deux DataFrames.

    • Autres types de jointures : Vous pouvez spécifier d'autres types de jointures :

      • Jointure à gauche (how='left') : Conserve toutes les lignes de df1, même celles qui n'ont pas de correspondance dans df2.
      • Jointure à droite (how='right') : Conserve toutes les lignes de df2.
      • Jointure externe (how='outer') : Conserve toutes les lignes des deux DataFrames.
    • Colonne spécifique : Si vous souhaitez effectuer la jointure sur une colonne au lieu de l'index, vous pouvez utiliser l'argument on.

    • Gestion des noms en conflit : Si les DataFrames contiennent des colonnes avec le même nom, vous pouvez utiliser les arguments lsuffix et rsuffix pour ajouter des suffixes afin d'éviter les conflits.