Exercice 69 / 100

Pandas — Merge

Fusionne deux DataFrames avec merge()

merge fusionne deux DataFrames sur une (ou plusieurs) clé(s) commune(s). C'est l'équivalent du join en sql.

Syntaxe

pd.merge(gauche, droite, on='cle', how='type_de_jointure')

Les 4 types de jointure (how)

'inner' (défaut) garde uniquement les clés présentes dans les DEUX 'left' garde toutes les lignes de gauche (NaN si pas trouvé à droite) 'right' symétrique 'outer' garde toutes les lignes des deux (NaN où c'est manquant)
Le paramètre how décide de la zone gardée : inner ne garde que les clés présentes des deux côtés, left garde toutes les lignes de gauche et met NaN là où la droite n'a rien à donner

Exemple : joindre employés et départements

employes = pd.DataFrame({ 'id': [1, 2, 3, 4], 'nom': ['Alice', 'Bob', 'Charlie', 'Diana'], 'dept_id': [10, 20, 10, 30] })
depts = pd.DataFrame({ 'dept_id': [10, 20, 30], 'dept_nom': ['Tech', 'RH', 'Finance'] })
pd.merge(employes, depts, on='dept_id') # id nom dept_id dept_nom # 1 Alice 10 Tech # 2 Bob 20 RH # 3 Charlie 10 Tech # 4 Diana 30 Finance

Clés de noms différents

pd.merge(a, b, left_on='client_id', right_on='id')

Jointures à plusieurs clés

pd.merge(a, b, on=['annee', 'mois'])

Indicator pour traçer

pd.merge(a, b, on='k', how='outer', indicator=True) # Ajoute une colonne _merge : 'left_only', 'right_only', 'both'

Très utile pour analyser les mayo mismatches après une jointure.

Variantes : concat, join

pd.concat([df1, df2]) empile verticalement (mêmes colonnes) pd.concat([df1, df2], axis=1) juxtapose horizontalement df1.join(df2, on='k') raccourci pour merge sur l'index

Toujours vérifier la shape avant et après un merge. Si tu attends 100 lignes et tu en obtiens 200, tu as probablement une cardinalité 1:N inattendue.

exercise.py

Envie d'aller plus loin ? Découvrez nos formations certifiées Bac+2 à Bac+5 →