0

0

Pandas怎么拼接两张表_concat([df1,df2], axis)纵向与横向拼接详解

P粉602998670

P粉602998670

发布时间:2026-03-10 17:12:14

|

591人浏览过

|

来源于php中文网

原创

该用 pd.concat() 时是单纯堆叠或并排拼接表而不需语义关联;它按 axis=0 纵向叠加行、axis=1 横向对齐索引拼列,不支持 on 参数,也不校验逻辑一致性。

pandas怎么拼接两张表_concat([df1,df2], axis)纵向与横向拼接详解

什么时候该用 pd.concat(),而不是 merge()join()

当你只是想把表“摞起来”或“并排摆”,不关心逻辑关联(比如没有主键、没有语义匹配),就该用 pd.concat()。它不做任何键值对齐,只按轴堆叠——像把两叠纸直接粘成一叠,或并排放到一张大桌子上。

常见错误现象:pd.concat([df1, df2], on='id') 报错 TypeError: concat() got an unexpected keyword argument 'on' ——因为 concat() 根本不认 on 参数,那是 merge() 的专属。

  • 纵向拼接(axis=0):适合合并结构相同、记录类型一致的多批数据,比如不同月份的销售流水
  • 横向拼接(axis=1):适合把两个表按行索引对齐后“并列展示”,比如同一组用户的基础信息 + 行为统计指标
  • 如果两张表索引不一致,axis=1 会自动用 NaN 填缺失位置;不加干预时默认 join='outer',即保留所有索引

axis=0axis=1 的真实行为差异

axis=0 是按行堆叠,结果行数 = len(df1) + len(df2)axis=1 是按列拼接,结果列数 = len(df1.columns) + len(df2.columns),但行数取决于索引对齐方式。

容易踩的坑:pd.concat([df1, df2], axis=1) 看似简单,但如果 df1.indexdf2.index 不完全重合,就会出现大量 NaN,且默认保留全部索引(join='outer'),可能让结果比预期宽得多、稀疏得多。

ChatMind
ChatMind

ChatMind是一款AI生成思维导图的效率工具,可以通过AI对话生成和编辑思维导图。

下载
  • 要严格只保留共有的索引行?加 join='inner'
  • 想重置最终索引避免重复编号?加 ignore_index=True(仅对 axis=0 有效)
  • 横向拼接时若列名冲突(如都有 'name'),concat() 不会自动加后缀,而是直接报错 ValueError: Columns overlap;此时需提前重命名列或改用 merge()

列名重复、索引混乱、内存暴涨——三个高频实际问题

拼接不是“点一下就完事”,尤其在真实项目中,原始表往往没那么规整。

  • 列名重复:用 pd.concat(..., keys=['left', 'right']) 可生成多级列索引,避免冲突;或手动改列名:df2.columns = [f'new_{c}' for c in df2.columns]
  • 索引混乱:若原始表是读 Excel 得来的,默认索引是 0, 1, 2...axis=0 拼接后会出现重复索引;建议加 ignore_index=True,否则后续 .groupby().loc[] 可能出错
  • 内存暴涨:大表拼接时,pd.concat() 默认复制数据;若确定原表不再修改,可加 copy=False(Pandas ≥ 2.0 支持,旧版无效)

merge() 混用的边界场景

有些需求表面像拼接,实则需要语义对齐——比如你有「学生名单」和「考试成绩」,都带 'student_id',但你想把成绩“贴”到对应学生后面,而不是简单按顺序堆叠。这时 concat() 无能为力,必须用 merge()

一个典型误用:pd.concat([students, scores], axis=1) 依赖两者索引顺序一致,一旦中间有人被删/排序变动,成绩就全错位了。而 pd.merge(students, scores, on='student_id') 才真正按逻辑关联。

  • 判断依据很简单:是否需要“根据某个字段查匹配”?需要 → 用 merge();不需要 → 用 concat()
  • 横向拼接前先问一句:这两张表的第 0 行,是不是天然就该是一条记录的两部分?如果是,concat(axis=1) 合理;如果不是,大概率该用 merge()

最常被忽略的一点:concat() 不校验数据一致性,它只管形状。哪怕 df1 有 1000 行、df2 有 500 行,axis=0 后就是 1500 行——至于这 1500 行有没有业务意义,它不管。

相关标签:

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
Python 时间序列分析与预测
Python 时间序列分析与预测

本专题专注讲解 Python 在时间序列数据处理与预测建模中的实战技巧,涵盖时间索引处理、周期性与趋势分解、平稳性检测、ARIMA/SARIMA 模型构建、预测误差评估,以及基于实际业务场景的时间序列项目实操,帮助学习者掌握从数据预处理到模型预测的完整时序分析能力。

78

2025.12.04

Python 数据清洗与预处理实战
Python 数据清洗与预处理实战

本专题系统讲解 Python 在数据清洗与预处理中的核心技术,包括使用 Pandas 进行缺失值处理、异常值检测、数据格式化、特征工程与数据转换,结合 NumPy 高效处理大规模数据。通过实战案例,帮助学习者掌握 如何处理混乱、不完整数据,为后续数据分析与机器学习模型训练打下坚实基础。

12

2026.01.31

堆和栈的区别
堆和栈的区别

堆和栈的区别:1、内存分配方式不同;2、大小不同;3、数据访问方式不同;4、数据的生命周期。本专题为大家提供堆和栈的区别的相关的文章、下载、课程内容,供大家免费下载体验。

441

2023.07.18

堆和栈区别
堆和栈区别

堆(Heap)和栈(Stack)是计算机中两种常见的内存分配机制。它们在内存管理的方式、分配方式以及使用场景上有很大的区别。本文将详细介绍堆和栈的特点、区别以及各自的使用场景。php中文网给大家带来了相关的教程以及文章欢迎大家前来学习阅读。

603

2023.08.10

堆和栈的区别
堆和栈的区别

堆和栈的区别:1、内存分配方式不同;2、大小不同;3、数据访问方式不同;4、数据的生命周期。本专题为大家提供堆和栈的区别的相关的文章、下载、课程内容,供大家免费下载体验。

441

2023.07.18

堆和栈区别
堆和栈区别

堆(Heap)和栈(Stack)是计算机中两种常见的内存分配机制。它们在内存管理的方式、分配方式以及使用场景上有很大的区别。本文将详细介绍堆和栈的特点、区别以及各自的使用场景。php中文网给大家带来了相关的教程以及文章欢迎大家前来学习阅读。

603

2023.08.10

堆和栈的区别
堆和栈的区别

堆和栈的区别:1、内存分配方式不同;2、大小不同;3、数据访问方式不同;4、数据的生命周期。本专题为大家提供堆和栈的区别的相关的文章、下载、课程内容,供大家免费下载体验。

441

2023.07.18

堆和栈区别
堆和栈区别

堆(Heap)和栈(Stack)是计算机中两种常见的内存分配机制。它们在内存管理的方式、分配方式以及使用场景上有很大的区别。本文将详细介绍堆和栈的特点、区别以及各自的使用场景。php中文网给大家带来了相关的教程以及文章欢迎大家前来学习阅读。

603

2023.08.10

Go高并发任务调度与Goroutine池化实践
Go高并发任务调度与Goroutine池化实践

本专题围绕 Go 语言在高并发任务处理场景中的实践展开,系统讲解 Goroutine 调度模型、Channel 通信机制以及并发控制策略。内容包括任务队列设计、Goroutine 池化管理、资源限制控制以及并发任务的性能优化方法。通过实际案例演示,帮助开发者构建稳定高效的 Go 并发任务处理系统,提高系统在高负载环境下的处理能力与稳定性。

4

2026.03.10

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号