pd.merge() 详解

四种 Join 方式,一张图搞懂 Pandas 表合并

adf

x1x2
A1
B2
C3
+

bdf

x1x3
AT
BF
DT
=
?
LEFT

左连接

以左表 (adf) 为主,右表来配
pd.merge(adf, bdf, how='left', on='x1')
x1x2x3
A1T
B2F
C3NaN
  • 保留 adf 的全部行 (A, B, C)
  • A、B 在 bdf 中找到匹配 → 填入 x3
  • C 在 bdf 中没有 → x3 填 NaN
RIGHT

右连接

以右表 (bdf) 为主,左表来配
pd.merge(adf, bdf, how='right', on='x1')
x1x2x3
A1.0T
B2.0F
DNaNT
  • 保留 bdf 的全部行 (A, B, D)
  • A、B 在 adf 中找到匹配 → 填入 x2
  • D 在 adf 中没有 → x2 填 NaN
INNER

内连接(默认)

只保留两边都有的 = 交集
pd.merge(adf, bdf, how='inner', on='x1')
x1x2x3
A1T
B2F
  • 只有 A、B 在两边都存在
  • C 和 D 都被丢弃
  • 这是 merge 的默认方式
OUTER

外连接

全部保留 = 并集
pd.merge(adf, bdf, how='outer', on='x1')
x1x2x3
A1T
B2F
C3NaN
DNaNT
  • 所有行都保留 (A, B, C, D)
  • 缺失的值填 NaN
  • 相当于 left + right 的合集

📋 速查总结

方式记忆口诀SQL 等价
left左表全留,右表来配LEFT JOIN
right右表全留,左表来配RIGHT JOIN
inner只留交集(默认)INNER JOIN
outer全部保留 = 并集FULL OUTER JOIN