news 2026/6/25 10:14:26

办公室中的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/6/15 13:18:50

2026年超详细降AIGC工具合集:应届生的论文降ai行动指南

嘿,学弟学妹们,又到毕业季了。 我猜,你现在肯定在电脑前,看着AIGC检测报告上的80%发呆。别慌,为了论文降ai这事,学长我,去年就是这么过来的。现在的论文aigc检测,真的变天了。以前我…

作者头像 李华
网站建设 2026/6/21 11:31:48

C#内联数组实战指南(高性能编程稀缺技术曝光)

第一章:C#内联数组概述C# 内联数组(Inline Arrays)是 .NET 7 引入的一项重要语言特性,允许开发者在结构体中声明固定大小的数组,并将其直接嵌入结构体内存布局中。这一特性显著提升了性能敏感场景下的内存访问效率&…

作者头像 李华
网站建设 2026/6/10 2:00:07

你的拍一拍设置了啥

👏拍了拍我的奶茶,吨吨喝光光🥤👏拍了拍我 喊暴富锦鲤来啦✨👏拍了拍我的发际线,说稳住别退👩🦲👏拍了拍我的钱包,叮!到账10w💰&#…

作者头像 李华