news 2026/4/23 6:49:47

办公室中的Python课 P17 【多表合体】Pandas:Merge 与 Concat

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
办公室中的Python课 P17 【多表合体】Pandas:Merge 与 Concat

📂 P17 【多表合体】Pandas:Merge 与 Concat(比 VLOOKUP 强百倍)

🎯 学习目标:

  • 物理堆叠 (concat):学会把结构相同的多个表(如 12 个月的月报)纵向拼接。
  • 逻辑关联 (merge):掌握数据库级别的表连接(类似 VLOOKUP/XLOOKUP,但更强大)。
  • 连接方式:理解内连接(Inner)、左连接(Left)和全连接(Outer)的区别。
  • AI 协作:利用通义灵码处理“列名不一致”时的自动关联。

🌟 引导词

“在 Excel 里,如果你要给 10 万行数据匹配产品单价,VLOOKUP 可能会让电脑卡死。如果你要合并 50 个分公司的表格,手动复制粘贴更是一场噩梦。
这一课,我们要学习 Pandas 的两项核心特技:concat(像搭积木一样上下或左右拼接)和merge(像拼图一样通过‘关键词’找关联)。掌握了它们,你就能在几秒钟内完成原本需要折腾一个下午的数据整合工作。**


一、concat:简单的物理拼接

如果你有三个月(1月、2月、3月)的销售表,格式一模一样,你想把它们合成一个“第一季度总表”,这就是concat的用武之地。

importpandasaspd df1=pd.read_excel("1月销售.xlsx")df2=pd.read_excel("2月销售.xlsx")df3=pd.read_excel("3月销售.xlsx")# 纵向拼接(默认 axis=0,即上下叠罗汉)# ignore_index=True 可以让行号重新排序quarter_df=pd.concat([df1,df2,df3],ignore_index=True)

二、merge:逻辑关联(VLOOKUP 的终结者)

当你需要根据“产品ID”,把“销售表”和“产品价格表”关联起来时,就要用到merge

1. 核心逻辑:四种连接方式
  • Left Join (左连接):保留左边表(如销售流水)的所有行,匹配右边表的信息。没匹配上的填空值。(最常用,类似 VLOOKUP)
  • Inner Join (内连接):只保留两个表里都能匹配上的行。
  • Outer Join (全连接):两个表的数据都留着,能配上的配对,不能配的留空。
2. 代码实战
# 假设 sales_df 有 '产品ID', '销量'# price_df 有 '产品ID', '单价'# 根据 '产品ID' 进行左连接result=pd.merge(sales_df,price_df,on='产品ID',how='left')# 如果两个表的关联列名不一样(比如一个叫‘ID’,一个叫‘编号’)result=pd.merge(sales_df,price_df,left_on='产品ID',right_on='编号',how='left')

三、手把手 AI 实战:处理“不听话”的匹配

在多表合并时,列名对不上、数据类型不统一是最大的坑。

1. Ask 模式:智能生成合并脚本
  • 操作:输入指令:

我有两个 df。A 表叫 df_user,有 'UserID';B 表叫 df_order,有 'uid'。请帮我写一段 Pandas 代码把它们合并:1. 使用左连接;2. 合并后把 'UserID' 为空的行删掉。

  • AI 价值:它会帮你处理left_onright_on的逻辑,并附带dropna清洗。
2. Edit 模式:自动批量合并
  • 操作:选中你手动读取并拼接的代码。
  • 动作:右键 ->通义灵码->智能编辑
  • 指令帮我修改这段代码,改用列表推导式和 os 库,自动读取当前文件夹下所有以“销售”开头的 Excel 文件并用 concat 合并。
  • 效果:代码量缩减 80%,自动化程度翻倍。
3. Agent 模式:跨表核对差异
  • 操作:输入/agent
  • 指令我有两份员工名单。请帮我找出:1. 在 A 表里有但 B 表里没有的人;2. 两份表里都存在但‘工资’数据不一致的人。

🛠️ 课后练习

  1. 新建P17_merge_test.py
  2. 模拟实验
  • 创建两个简单的 CSV 文件:一个存“学生姓名和学号”,一个存“学号和考试成绩”。
  • 用 Python 读取它们。
  • 尝试用merge把成绩匹配到姓名后面。
  • 进阶挑战:故意在成绩表里少写几个人的成绩,观察how='left'how='inner'的结果有什么不同。

总结与预告

  • concat:解决“表太多”的问题(物理堆叠)。
  • merge:解决“信息分散”的问题(逻辑关联)。
  • **on/how**:是 merge 函数最重要的两个参数。

[下一篇 (P18),我们将学习Pandas:文本处理与正则匹配的高级应用。你将学会如何从杂乱的地址、备注信息中,用一行代码提取出电话号码或身份证号!**

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/23 6:47:00

国际化多语言支持路线图:中文之外是否会推出英文版?

国际化多语言支持路线图:中文之外是否会推出英文版? 在跨国企业培训视频批量生成、国际课程本地化制作以及全球营销内容快速分发的现实需求推动下,AI驱动的数字人视频系统正面临一场从“能用”到“好用”的关键跃迁。HeyGem 作为一款已在国内…

作者头像 李华
网站建设 2026/4/18 11:51:24

django美妆产品网络评价的数据采集与分析-计算机毕业设计源码+LW文档

摘要在当今数字化时代,美妆市场蓬勃发展,网络评价成为消费者了解美妆产品的重要信息来源。随着互联网技术的不断进步,大量的美妆产品网络评价数据蕴含着丰富的价值,对其进行有效的采集与分析,有助于商家精准把握消费者…

作者头像 李华
网站建设 2026/4/22 7:54:03

如何查看HeyGem系统运行状态?tail -f日志监控命令详解

如何实时监控 HeyGem 系统运行状态?深入掌握 tail -f 日志追踪技巧 在部署一个AI驱动的数字人视频生成系统时,最让人焦虑的不是模型跑不起来,而是——你根本不知道它跑到哪儿了。 没有进度条,页面卡在“正在处理”,后台…

作者头像 李华
网站建设 2026/4/18 3:11:30

从零到上线:C# 12拦截器配置完整流程(含生产环境验证)

第一章:C# 12拦截器配置概述C# 12 引入了拦截器(Interceptors)这一实验性功能,旨在为源生成器(Source Generators)提供更精细的代码注入能力。拦截器允许开发者在编译期间将特定方法调用重定向到自定义实现…

作者头像 李华
网站建设 2026/4/22 23:34:52

医院排队叫号系统设计与实现(有完整资料)

资料查找方式:特纳斯电子(电子校园网):搜索下面编号即可编号:T2182405M设计简介:本设计是基于STM32的医院排队叫号系统,主要实现以下功能:1.可通过取号端进行触摸屏取号 2.取号端显示…

作者头像 李华