当前位置: 首页 > news >正文

搞懂 pandas 中的 concat、merge、join:三者到底有什么区别?

🔗 搞懂 pandas 中的concatmergejoin:三者到底有什么区别?

你是不是也经常困惑:

  • 什么时候用pd.concat()

  • 什么时候该用df.merge()

  • df.join()又是什么?跟 merge 有啥不同?

别急!今天我们就用最直白的语言 + 可运行的代码,一次性讲清楚这三个“拼表”操作的区别和使用场景!

✅ 所有示例数据均由代码生成,无需任何外部文件,复制即用!


🧰 准备工作:导入库 + 构造示例数据

import pandas as pd # 表1:用户基本信息 users = pd.DataFrame({ 'user_id': [1, 2, 3, 4], 'name': ['Alice', 'Bob', 'Charlie', 'Diana'], 'city': ['北京', '上海', '广州', '深圳'] }) # 表2:用户订单信息 orders = pd.DataFrame({ 'order_id': [101, 102, 103, 104], 'user_id': [1, 2, 3, 5], # 注意:user_id=5 在 users 中不存在 'amount': [200, 150, 300, 99] }) # 表3:用户登录日志(索引为 user_id) logins = pd.DataFrame({ 'last_login': ['2026-02-10', '2026-02-12', '2026-02-13', '2026-02-14'] }, index=[1, 2, 3, 4]) # 索引是 user_id

现在我们有三张表:

  • users:用户主表(含 user_id)

  • orders:订单表(通过 user_id 关联)

  • logins:登录日志(以 user_id 为索引)

接下来,就看它们如何“拼”在一起!


1️⃣pd.concat():上下 or 左右“堆叠”——结构相同,直接拼接

🎯 适用场景:合并多个结构相似的 DataFrame(比如多个月份的销售表、多个实验结果)

示例:纵向拼接(axis=0,默认)

extra_users = pd.DataFrame({ 'user_id': [5, 6], 'name': ['Eva', 'Frank'], 'city': ['杭州', '成都'] }) all_users = pd.concat([users, extra_users], ignore_index=True) print(all_users)

✅ 输出:6 行用户数据,“堆”在一起。

示例:横向拼接(axis=1)

# 把 users 和 logins 按索引横向拼(需对齐索引) result = pd.concat([users.set_index('user_id'), logins], axis=1) print(result)

⚠️ 注意:concat不基于列内容匹配,只按索引或位置对齐

核心特点

  • 像“粘贴”一样堆叠数据

  • 不涉及“关联字段”匹配

  • 适合同构数据合并


2️⃣df.merge():基于列值的“数据库式连接”——最常用!

🎯 适用场景:两张表通过某个公共字段(如 ID)关联,类似 SQL 的 JOIN

示例:内连接(inner join)

merged = users.merge(orders, on='user_id', how='inner') print(merged)

✅ 输出:只保留user_id在两张表中都存在的记录(user_id=1,2,3)

支持多种连接方式:

  • how='left':保留左表全部(users 全部,orders 缺失补 NaN)

  • how='right':保留右表全部

  • how='outer':全保留,缺失补 NaN

还支持不同名列的连接:

# 如果 users 用 'id',orders 用 'user_id' users2 = users.rename(columns={'user_id': 'id'}) result = users2.merge(orders, left_on='id', right_on='user_id')

核心特点

  • 基于列的值进行匹配

  • 功能最强大、最灵活

  • 日常分析 80% 场景用它!


3️⃣df.join():基于索引的快速连接

🎯 适用场景:一张表的索引 = 另一张表的索引(或某列)

示例:用usersuser_id作为索引,去 joinlogins

users_indexed = users.set_index('user_id') joined = users_indexed.join(logins) # 默认 left join print(joined)

✅ 输出:users 的每一行,自动匹配 logins 中对应索引的登录时间。

也可以指定右表用哪一列做索引:

# 如果 logins 不是以 user_id 为索引,而是普通列 logins2 = pd.DataFrame({ 'user_id': [1, 2, 3, 4], 'last_login': ['2026-02-10', '2026-02-12', '2026-02-13', '2026-02-14'] }) # 需先设索引 joined2 = users_indexed.join(logins2.set_index('user_id'))

核心特点

  • 默认按索引对齐

  • 本质是merge的快捷方式(join底层调用merge

  • 适合“主表索引 + 附属信息表”的场景


🆚 三者对比速查表

方法

对齐依据

类似 SQL

典型用途

是否需要公共列

pd.concat()

索引 / 位置

UNION ALL

合并多份同结构数据

❌ 不需要

df.merge()

列的值

JOIN

通过 ID/键关联两张表

✅ 需要

df.join()

索引(或指定列)

JOIN

主表(索引为ID)+ 附属信息表

⚠️ 通常需设索引


💡 使用建议

  • 想把多个月的报表合并成一年? → 用concat

  • 想把用户表和订单表关联起来? → 用merge

  • 你的主表已经用ID设为索引,想快速加一列信息? → 用join

🌟 记住一句话:
“concat 是堆叠,merge 是匹配,join 是索引对齐。”


📦 结语

掌握concatmergejoin的区别,是迈向高效数据处理的关键一步!
下次再遇到“怎么把两张表合起来”的问题,先问自己:
👉 我是要堆数据?还是按字段匹配?还是按索引补充信息


❤️ 觉得有用?点赞 + 在看 + 转发,让更多人告别“拼表混乱”!


http://www.jsqmd.com/news/421653/

相关文章:

  • 香港留学中介口碑榜:本地学长学姐都推荐哪家? - 博客湾
  • 认知优先法则 (The Cognition-First Framework):在概率混沌中构建逻辑秩序与系统韧性
  • 热销榜单:甄闪亮品牌代理靠谱吗?2026年甄闪亮用户评价如何? - 睿易优选
  • 金属制品 / 文件柜 / 钢制货架采购指南:2026 年西南优选企业华谊君羊 - 深度智识库
  • 教学设备/仓储钢制货架/办公家具源头厂家怎么选?2026年高性价比实力企业推荐 - 深度智识库
  • 认知优先:Agentic Workflow 设计者的核心能力图谱与熵减系统论
  • mfc140u.dll修复工具下载:三种方法快速解决由于找不到mfc140u.dll,无法继续执行代码错误 - PC修复电脑医生
  • 使用growpart工具完成Linux系统盘分区扩容及文件系统扩容
  • 2026 全网实测:按效果付费的 GEO 优化服务商哪家强? - 品牌推荐大师1
  • What is growpart utility and how to use it ?
  • 2026年 塑料原料厂家推荐排行榜:塑胶原料/塑料颗粒/工程塑料/改性材料,源头实力与创新应用深度解析 - 品牌企业推荐师(官方)
  • 青岛不锈钢保温水箱哪家专业?本土品牌深度测评对比 - 中媒介
  • 2026年河北发电机租赁推荐厂家:发电机出租、发电车租赁、UPS应急电源出租 - 海棠依旧大
  • 解决数据孤岛:AI知识库在小团队的落地案例与技巧
  • 2026年 苹果舱厂家推荐排行榜:移动苹果舱,装配式苹果舱,智能苹果舱,网红创意苹果舱,全景集成与钢结构一体式设计深度解析 - 品牌企业推荐师(官方)
  • 2026年2月热门放热焊接公司推荐,这些企业值得关注!柔性石墨接地线/接地施工队伍,放热焊接销售厂家排行 - 品牌推荐师
  • 探针台在半导体测试领域的关键之处
  • 数据质量测试的核心定义与价值(10)
  • 适配半导体设备流量测量:2026值得关注的超声波流量传感器品牌推荐 - 品牌2025
  • 展厅设计公司哪家好?文化文博/智慧城市领域5家优质机构推荐 - 深度智识库
  • 20260228 模拟测 总结
  • 某园区网DNS劫持报告
  • 《计算机视觉:模型、学习和推理》第 16 章-多摄像机系统
  • 2026年 刀片厂家推荐排行榜:不锈钢/粉碎机/钢筋/合金/剪板机/木工/切粒机/撕碎机/中药材/食品刀片,匠心锻造,精准切割之选 - 品牌企业推荐师(官方)
  • 2026年民用微压氧舱厂家推荐排行榜:家用/康复/美容氧舱品牌深度解析与选购指南 - 品牌企业推荐师(官方)
  • 装备制造业如何运用运维管理平台实现降本增效
  • 《计算机视觉:模型、学习和推理》第 15 章-变换模型
  • 2026卫生高级职称评审题库哪个好?主流题库全面对比,科学选库不踩坑 - 医考机构品牌测评专家
  • 5篇RAC前沿论文:从医疗到区块链
  • 闲置中石化加油卡回收变现认准京顺回收 - 京顺回收