搞懂 pandas 中的 concat、merge、join:三者到底有什么区别?
搞懂 pandas 中的concat、merge、join三者到底有什么区别你是不是也经常困惑什么时候用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_id5 在 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_idorders订单表通过 user_id 关联logins登录日志以 user_id 为索引接下来就看它们如何“拼”在一起1️⃣pd.concat()上下 or 左右“堆叠”——结构相同直接拼接❝ 适用场景合并多个结构相似的 DataFrame比如多个月份的销售表、多个实验结果示例纵向拼接axis0默认extra_users pd.DataFrame({ user_id: [5, 6], name: [Eva, Frank], city: [杭州, 成都] }) all_users pd.concat([users, extra_users], ignore_indexTrue) print(all_users)✅ 输出6 行用户数据“堆”在一起。示例横向拼接axis1# 把 users 和 logins 按索引横向拼需对齐索引 result pd.concat([users.set_index(user_id), logins], axis1) print(result)⚠️ 注意concat不基于列内容匹配只按索引或位置对齐❝✅核心特点像“粘贴”一样堆叠数据不涉及“关联字段”匹配适合同构数据合并2️⃣df.merge()基于列值的“数据库式连接”——最常用❝ 适用场景两张表通过某个公共字段如 ID关联类似 SQL 的 JOIN示例内连接inner joinmerged users.merge(orders, onuser_id, howinner) print(merged)✅ 输出只保留user_id在两张表中都存在的记录user_id1,2,3支持多种连接方式howleft保留左表全部users 全部orders 缺失补 NaNhowright保留右表全部howouter全保留缺失补 NaN还支持不同名列的连接# 如果 users 用 idorders 用 user_id users2 users.rename(columns{user_id: id}) result users2.merge(orders, left_onid, right_onuser_id)❝✅核心特点基于列的值进行匹配功能最强大、最灵活日常分析 80% 场景用它3️⃣df.join()基于索引的快速连接❝ 适用场景一张表的索引 另一张表的索引或某列示例用users的user_id作为索引去 joinloginsusers_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 是索引对齐。” 结语掌握concat、merge、join的区别是迈向高效数据处理的关键一步下次再遇到“怎么把两张表合起来”的问题先问自己 我是要堆数据还是按字段匹配还是按索引补充信息❤️ 觉得有用点赞 在看 转发让更多人告别“拼表混乱”

相关新闻

Gin 框架中的规范响应格式设计与实现(二十)

Gin 框架中的规范响应格式设计与实现(二十)

在现代Web应用开发中,统一和规范化的API响应格式对于前后端协作至关重要。今天,我们来探讨如何在Gin框架中设计一套既实用又易于维护的响应格式规范。为什么需要统一的响应格式?首先,让我们思考一个问题:为什么要统一A…

2026/6/19 0:11:04 阅读更多 →
Eclipse RCP企业级应用实践——Dev

Eclipse RCP企业级应用实践——Dev

文章目录 背景目标实现下载 背景 在微服务与前后端分离的开发模式下,基础设施的割裂已成为影响开发效率的关键瓶颈。开发者日常面临的三类高频场景,往往需要切换多个工具、耗费大量环境搭建时间: 文件服务器快速搭建:测试文件上传…

2026/6/19 0:11:34 阅读更多 →
FPGA 验证的主要工作流程和验证工具是什么?

FPGA 验证的主要工作流程和验证工具是什么?

验证本质上也是一个“证伪”的过程。从流程到工具,FPGA 验证工程师的终极目的只有一个:发现所有问题,或者证明在既定应用场景下没有问题,确保设计在仿真和上板后功能、时序都符合预期。在实际项目中,验证所占的精力远超…

2026/6/19 0:12:36 阅读更多 →

最新新闻

中外大模型能力对比分析

中外大模型能力对比分析

中外大模型能力差距:结构性成因的深度分析属性说明文档版本v1.0撰写日期2026-07-02文档类型技术战略分析分析视角机制解释,而非榜单罗列 摘要 「国产大模型不如国外」是一个过于粗糙的命题。截至 2026 年上半年,斯坦福 HAI《AI Index 2026》指…

2026/7/3 17:52:04 阅读更多 →
GHelper:如何用开源工具彻底解放你的华硕笔记本性能潜力?

GHelper:如何用开源工具彻底解放你的华硕笔记本性能潜力?

GHelper:如何用开源工具彻底解放你的华硕笔记本性能潜力? 【免费下载链接】g-helper Lightweight Armoury Crate alternative for Asus laptops with nearly the same functionality. Works with ROG Zephyrus, Flow, TUF, Strix, Scar, ProArt, Vivoboo…

2026/7/3 17:52:04 阅读更多 →
LENA-R8与PIC18LF45K40的嵌入式通信与精确定位方案

LENA-R8与PIC18LF45K40的嵌入式通信与精确定位方案

1. LENA-R8与PIC18LF45K40的硬件组合解析这个组合的核心价值在于将蜂窝通信与精确定位能力集成到嵌入式系统中。LENA-R8是u-blox推出的多模LTE Cat 1模块,支持14个LTE频段和4个GSM/GPRS频段,这意味着它能在全球绝大多数地区实现网络连接。其内置的u-blox…

2026/7/3 17:52:04 阅读更多 →
心电自监督分类论文分享(1)-read your heart

心电自监督分类论文分享(1)-read your heart

READING YOUR HEART 研究背景与动机 现有心电自监督学习分为对比学习、重构学习两类,但全部把心电当做普通时序信号,采用固定窗口、固定步长切割波形,存在两个核心缺陷: 丢失心电专属形态、节律特征破坏心跳间潜在语义关系 为…

2026/7/3 17:50:04 阅读更多 →
AI编程高效学习路径:从Python速成到文本分类实战

AI编程高效学习路径:从Python速成到文本分类实战

1. 为什么选择这条AI编程学习路径?我见过太多人被AI编程的学习门槛劝退。要么被复杂的数学公式吓跑,要么在环境配置阶段就耗尽耐心,还有人在工具选择上反复折腾却始终无法开始真正编码。经过三年多的AI教学实践,我总结出一条最适合…

2026/7/3 17:50:04 阅读更多 →
解锁NVIDIA显卡的色彩魔法:novideo_srgb让广色域显示器回归真实色彩

解锁NVIDIA显卡的色彩魔法:novideo_srgb让广色域显示器回归真实色彩

解锁NVIDIA显卡的色彩魔法:novideo_srgb让广色域显示器回归真实色彩 【免费下载链接】novideo_srgb Calibrate monitors to sRGB or other color spaces on NVIDIA GPUs, based on EDID data or ICC profiles 项目地址: https://gitcode.com/gh_mirrors/no/novide…

2026/7/3 17:48:03 阅读更多 →

日新闻

Nginx防御TLS重协商攻击实战:从原理到配置与监控

Nginx防御TLS重协商攻击实战:从原理到配置与监控

1. 项目概述:为什么TLS重协商攻击至今仍需警惕十多年前的CVE-2011-1473,一个关于TLS/SSL协议重协商机制的漏洞,现在提起来还有必要吗?很多运维和开发朋友可能会觉得,这都老掉牙了,现代服务器和客户端不都默…

2026/7/3 0:03:59 阅读更多 →
华为防火墙双通道远程管理实战:Web与SSH配置详解

华为防火墙双通道远程管理实战:Web与SSH配置详解

1. 项目概述:为什么需要双通道远程管理防火墙?在任何一个稍具规模的企业网络里,防火墙都是那个默默守护在边界的关键角色。作为网络工程师,我们不可能每次都跑到机房,插上console线去配置它。远程管理能力,…

2026/7/3 0:03:59 阅读更多 →
AD74413R与PIC18F65K40的高精度工业数据采集方案

AD74413R与PIC18F65K40的高精度工业数据采集方案

1. 项目概述:AD74413R与PIC18F65K40的协同工作在工业自动化和精密测量领域,同时实现高精度模数转换(ADC)和数模转换(DAC)功能是许多复杂系统的核心需求。AD74413R作为一款四通道可配置模拟输入/输出器件,与PIC18F65K40微控制器的组合&#xf…

2026/7/3 0:05:59 阅读更多 →

周新闻

月新闻