搞懂 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/7/3 18:40:31 阅读更多 →
Eclipse RCP企业级应用实践——Dev

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

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

2026/7/3 18:40:03 阅读更多 →
FPGA 验证的主要工作流程和验证工具是什么?

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

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

2026/7/3 18:42:03 阅读更多 →

最新新闻

半导体百科 | 扩散与退火工艺详解:热预算控制与RTP实战

半导体百科 | 扩散与退火工艺详解:热预算控制与RTP实战

一、问题背景 做工艺整合的都知道,离子注入只是前戏,真正的重头戏在后面——退火。有一次我做0.13μm逻辑工艺的源漏注入后热工艺窗口评估,愣是被热预算计算搞崩溃了三天。因为炉管退火和RTP快速热退火的温度曲线完全不同,同样的…

2026/7/3 18:40:42 阅读更多 →
银发科技与多元渠道的“价值共振”:银发智能科技产品与线上线下渠道对接会圆满落幕

银发科技与多元渠道的“价值共振”:银发智能科技产品与线上线下渠道对接会圆满落幕

​2026年6月30日下午,由AgeClub(上海银创同行科技有限公司)主办、上海市养老科技产业园协办的“数智银发,生态共赢——银发智能科技产品与线上线下渠道对接会”在产业园403报告厅圆满举行。活动汇聚了如身机器人、程天科技、小维健…

2026/7/3 18:36:40 阅读更多 →
IntelliJ UI自动化测试框架:Remote Robot原理、配置与最佳实践

IntelliJ UI自动化测试框架:Remote Robot原理、配置与最佳实践

1. 项目概述:IntelliJ UI 测试机器人如果你正在为你的 IntelliJ IDEA 插件编写功能测试,或者想自动化一些繁琐的 IDE 操作流程,那么手动点击、肉眼观察的方式很快就会让你感到力不从心。尤其是在插件功能复杂、涉及多个对话框和菜单交互时&am…

2026/7/3 18:32:39 阅读更多 →
临沂不锈钢铝蜂窝吊顶选材技术参数与性能评测要点

临沂不锈钢铝蜂窝吊顶选材技术参数与性能评测要点

在建筑装饰材料市场,临沂不锈钢铝蜂窝吊顶产品正逐步替代传统石膏板与铝扣板吊顶,成为公共空间与高端住宅装修的热门选项。这种材料本质是一种“三明治结构”,核心在于将不锈钢面板与高强度铝蜂窝芯通过专用复合工艺紧密压合。选材与评测&…

2026/7/3 18:32:39 阅读更多 →
【hive学习笔记2】

【hive学习笔记2】

笔记关联-hive学习笔记 测试Demo 1.首先在windows上(本地)创建几个文件(放一列数据),如:2.在hive建表3.上传数据上传成功显示4.测试查询hive系统架构上图所示是hive的主要组件及其与Hadoop的交互方式&#…

2026/7/3 18:30:39 阅读更多 →
act仿真,任务层

act仿真,任务层

整体分层 任务与环境层:sim_env.py(关节空间控制)、ee_sim_env.py(末端位姿控制)、scripted_policy.py(脚本策略)、assets(MuJoCo XML 场景)。数据层:record…

2026/7/3 18:30:39 阅读更多 →

日新闻

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 阅读更多 →

周新闻

月新闻