pandas merge 左连接笔记

670 字
3 分钟
pandas merge 左连接笔记

pandas merge 左连接笔记#

左连接是数据分析里最常用的合并方式:以左表为主,把右表的补充字段拼进来。但它也最容易因为重复键导致行数膨胀。

我的习惯是每次 merge 前后都检查行数、键唯一性和未匹配数量。

什么时候用 left join#

当左表是分析主体时使用左连接。例如订单表是主体,用户表只是补充用户等级;图片清单是主体,标注表只是补充类别信息。

左连接应该保证左表记录不丢失,但不保证行数一定不变。如果右表同一个键有多行,行数会被放大。

合并前检查键#

print(orders["user_id"].isna().sum())
print(users["user_id"].duplicated().sum())
print(users[users["user_id"].duplicated(keep=False)].head())

如果右表键不唯一,要先决定聚合、去重,还是允许一对多合并。

带指示列合并#

merged = orders.merge(
users[["user_id", "level"]],
on="user_id",
how="left",
indicator=True,
)
print(orders.shape, merged.shape)
print(merged["_merge"].value_counts())

indicator=True 会生成 _merge,可以快速看到哪些左表记录没有匹配到右表。

常见问题#

  • 两个表的键类型不同,一个是数字,一个是字符串。

  • 键里有前后空格,肉眼看一样但实际匹配不上。

  • 右表重复键导致合并后行数变多。

  • 合并后同名列出现 _x、_y,说明字段设计需要整理。

实战复盘#

写《pandas merge 左连接笔记》这类数据分析文章时,我会强制保留“检查点”。因为数据分析里最危险的不是报错,而是代码顺利跑完却得到错误结论。

一个合格的 pandas 步骤,至少要能回答:输入多少行、输出多少行、哪些字段被修改、失败值有多少、是否有样本可以人工复核。缺少这些信息,代码就很难进入正式流程。

如果以后把这些文章串成系列,可以按读取、检查、清洗、变换、统计、导出排列。这样读者能从原始数据一路走到可交付结果。

最小验收样例#

验收《pandas merge 左连接笔记》时,我会手写一个三到五行的小 DataFrame:一行正常数据,一行缺失或异常数据,一行边界数据。先让示例在小表上跑通,再换成完整数据集。

小表的好处是结果可以人工计算。只要人工结果和 pandas 输出对不上,就说明代码逻辑或字段口径还没想清楚。这个过程比直接在大表上调试更可靠。

小结#

merge 的风险不在语法,而在数据关系。每次左连接都要确认键、行数和未匹配记录。

文章分享

如果这篇文章对你有帮助,欢迎分享给更多人!

pandas merge 左连接笔记
https://blog.tjcheng.cn/posts/backfill/2026-05-16/pandas-merge-left-join/
作者
TengJinCheng
发布于
2026-05-16
许可协议
CC BY-NC-SA 4.0
Profile Image of the Author
TengJinCheng
Hello, I'm Teng.
公告
欢迎来到TengJinCheng工作铺!
音乐
封面

音乐

暂未播放

0:000:00
暂无歌词
分类
标签
站点统计
文章
157
分类
7
标签
114
总字数
109,939
运行时长
0 天
最后活动
0 天前
站点信息
构建平台
Local
博客版本
Firefly v6.13.4
文章许可
CC BY-NC-SA 4.0

文章目录