news 2026/10/26 14:11:02

办公室中的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_on和right_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/10/23 12:38:41

从Prompt到多模态:大模型核心术语全解析,程序员必看收藏指南

✅ 导语:当下AI领域的热门词汇层出不穷,Prompt、Agent、MCP、Skills更是高频出现,看不懂总觉得跟不上节奏。今天整理了这份通俗易懂的AI核心术语清单,无专业晦涩表述,看完就能轻松理解,还附赠同量级必懂热门…

作者头像 李华
网站建设 2026/10/26 10:02:40

智慧港口倍福PLC和欧姆龙CJ2M系列PLC通过协议转换网关进行通讯去控制DeviceNet从站设备案例

一、案例背景与项目痛点案例背景某大型现代化集装箱港口正在推进智慧港口建设,为提升作业效率和设备协同水平,计划将新增的自动化轨道吊系统与现有轮胎吊系统进行深度融合。新增轨道吊采用倍福CX2040系列PLC作为主控制器,通过EtherCAT总线实现…

作者头像 李华
网站建设 2026/10/23 6:02:57

别再复制数据了,用C# Span实现超高速转换,现在学还不晚!

第一章&#xff1a;Span概述&#xff1a;C#中的高性能数据转换新范式Span<T> 是 C# 7.2 引入的一种高效内存抽象类型&#xff0c;专为栈分配和堆外内存操作设计&#xff0c;旨在解决传统数组和集合在频繁数据拷贝与跨层传递时带来的性能瓶颈。它提供对连续内存区域的安全…

作者头像 李华
网站建设 2026/10/25 22:22:18

Prolog语言入门教程:从安装到核心概念全解析

作为一名有十余年教学经验的计算机科学教师&#xff0c;我见证了Prolog这门语言在逻辑编程领域的独特地位。它并非用于开发常规应用&#xff0c;而是解决那些涉及符号计算、关系定义和逻辑推理的特定问题。理解其声明式编程范式&#xff0c;是掌握它的关键。本文将带你避开理论…

作者头像 李华
网站建设 2026/10/24 3:57:58

仅限本周公开:C#跨平台拦截器性能压测全数据报告(含GitHub源码)

第一章&#xff1a;C#跨平台拦截器性能压测全数据报告概述在现代分布式系统架构中&#xff0c;C#开发的跨平台拦截器广泛应用于请求过滤、日志记录与权限校验等场景。随着.NET 6及后续版本对跨平台支持的持续优化&#xff0c;拦截器在Linux、macOS与Windows环境下的性能表现差异…

作者头像 李华