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 :
-
Création des DataFrames :
df1
contient les colonnesid
,ville
, etnom
, etid
est défini comme l'index.df2
contient une colonneage
, et l'index est également basé surid
.
-
Fusion avec
join()
:- La méthode
df1.join(df2)
fusionne les deux DataFrames en utilisant l'index communid
. Cela permet d'ajouter la colonneage
dedf2
àdf1
pour les lignes dont les index correspondent.
- La méthode
-
Affichage : Le DataFrame résultant contient les colonnes
ville
,nom
, etage
, avec les valeurs fusionnées.
📍 Remarques
-
Jointure interne par défaut : Par défaut,
join()
utilise une jointure interne (typehow='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 dedf1
, même celles qui n'ont pas de correspondance dansdf2
. - Jointure à droite (
how='right'
) : Conserve toutes les lignes dedf2
. - Jointure externe (
how='outer'
) : Conserve toutes les lignes des deux DataFrames.
- Jointure à gauche (
-
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
etrsuffix
pour ajouter des suffixes afin d'éviter les conflits.