pd.merge(adf, bdf, how='left', on='x1')
- 保留 adf 的全部行 (A, B, C)
- A、B 在 bdf 中找到匹配 → 填入 x3
- C 在 bdf 中没有 → x3 填 NaN
pd.merge(adf, bdf, how='right', on='x1')
- 保留 bdf 的全部行 (A, B, D)
- A、B 在 adf 中找到匹配 → 填入 x2
- D 在 adf 中没有 → x2 填 NaN
pd.merge(adf, bdf, how='inner', on='x1')
- 只有 A、B 在两边都存在
- C 和 D 都被丢弃
- 这是 merge 的默认方式
pd.merge(adf, bdf, how='outer', on='x1')
| x1 | x2 | x3 |
| A | 1 | T |
| B | 2 | F |
| C | 3 | NaN |
| D | NaN | T |
- 所有行都保留 (A, B, C, D)
- 缺失的值填 NaN
- 相当于 left + right 的合集
📋 速查总结
| 方式 | 记忆口诀 | SQL 等价 |
| left | 左表全留,右表来配 | LEFT JOIN |
| right | 右表全留,左表来配 | RIGHT JOIN |
| inner | 只留交集(默认) | INNER JOIN |
| outer | 全部保留 = 并集 | FULL OUTER JOIN |