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')'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)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 Financepd.merge(a, b, left_on='client_id', right_on='id')pd.merge(a, b, on=['annee', 'mois'])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.
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'indexToujours 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.
Envie d'aller plus loin ? Découvrez nos formations certifiées Bac+2 à Bac+5 →