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

【Pandas总结】第七节 Pandas 合并数据集_pd.concat()

文章目录

  • `pd.concat()` 的用法
    • 一、数据准备:
    • 二、上下堆叠合并 `axis=0`
    • 三、左右拼接合并 `axis=1`
    • 四、inner 与 outer 对比
  • 写在最后

将不同的数据源合并在一起是数据处理中最有趣的事情之一,在pandas中进行数据的合并,既可以使用pd.concat 进行简单的数据合并,也可以使用pd.merge, pd.join 进行复杂的合并;本节主要内容是pd.concat

pd.concat() 的用法

语法格式:

pandas.concat(objs, axis=0, join=‘outer’, ignore_index=False, keys=None, levels=None, names=None, verify_integrity=False, sort=False, copy=True)

参数解释
objs表示需要连接的对象,多个df的话,用列表的方式传入该参数
axis{0/‘index’, 1/‘columns’}要连接的轴。0 为上下堆叠,1为左右拼接
join{‘inner’, ‘outer’}, 默认‘outer’。join='outer’表示外连接,保留两个表中的所有信息;join="inner"表示内连接,拼接结果只保留两个表共有的信息
ignore_indexbool,默认为 False。如果为 True,则不要沿连接轴使用索引值。结果轴将标记为 0, …, n - 1。如果您要连接对象,而连接轴没有有意义的索引信息,这将非常有用。请注意,连接中仍然尊重其他轴上的索引值。
keys键序列,默认无。如果通过了多个级别,则应包含 元组 。使用传递的键作为最外层构建层次索引。
levels序列列表,默认无。用于构造 MultiIndex 的特定级别(唯一值)。否则,它们将从密钥中推断出来。
names默认无。生成的分层索引中的级别名称。
verify_integritybool 值,默认为 False。检查新的连接轴是否包含重复项。相对于实际的数据连接,这可能非常昂贵。
sortbool 值,默认为 False。如果连接为“外部”时尚未对齐,则对非连接轴进行排序。这在 join=‘inner’ 时无效,它已经保留了非串联轴的顺序。在 1.0.0 版更改: 默认情况下更改为不排序。
copybool 值,默认 True。如果为 False,则不要不必要地复制数据。

说明:虽然参数参数有这么多,但其实很多都不常用,常用的参数只有:axis,join ;只要记着两个就OK啦~

一、数据准备:

import pandas as pd
df1=pd.DataFrame({'姓名':['周杰伦','蔡徐坤','王菲'],'歌曲':['明明就','情人','如愿'],'发行时间':[2019,2018,2021]},index=[1,2,3])
df2=pd.DataFrame({'姓名':['林俊杰','凤凰传奇'],'歌曲':['修炼爱情','海底'],'发行时间':[2016,2022]},index=[1,2])

在这里插入图片描述

二、上下堆叠合并 axis=0

更多时候,pd.concat 就是为了将表上下拼接起来,所以这里的内容是非常重要的;

import pandas as pd
df1=pd.DataFrame({'姓名':['周杰伦','蔡徐坤','王菲'],'歌曲':['明明就','情人','如愿'],'发行时间':[2019,2018,2021]},index=[1,2,3])
df2=pd.DataFrame({'姓名':['林俊杰','凤凰传奇'],'歌曲':['修炼爱情','海底'],'发行时间':[2016,2022]},index=[1,2])
df3 = pd.concat([df1,df2])

在这里插入图片描述

若两个表所包含的列名有不同,举例如下:

import pandas as pd
df1=pd.DataFrame({'姓名':['周杰伦','蔡徐坤','王菲'],'歌曲':['明明就','情人','如愿'],'发行时间':[2019,2018,2021]},index=[1,2,3])
df2=pd.DataFrame({'姓名':['林俊杰','凤凰传奇'],'歌曲':['修炼爱情','海底'],'金曲奖':['是','否']},index=[1,2])
df3 = pd.concat([df1,df2])

在这里插入图片描述

三、左右拼接合并 axis=1

import pandas as pd
df1=pd.DataFrame({'姓名':['周杰伦','蔡徐坤','王菲'],'歌曲':['明明就','情人','如愿'],'发行时间':[2019,2018,2021]},index=[1,2,3])
df2=pd.DataFrame({'姓名':['林俊杰','凤凰传奇'],'歌曲':['修炼爱情','海底'],'发行时间':[2016,2022]},index=[1,2])
df3 = pd.concat([df1,df2],axis=1)

在这里插入图片描述

若两个表所包含的列不同,举例如下:

import pandas as pd
df1=pd.DataFrame({'姓名':['周杰伦','蔡徐坤','王菲'],'歌曲':['明明就','情人','如愿'],'发行时间':[2019,2018,2021]},index=[1,2,3])
df2=pd.DataFrame({'姓名':['林俊杰','凤凰传奇'],'歌曲':['修炼爱情','海底'],'金曲奖':['是','否']},index=[1,2])
df3 = pd.concat([df1,df2],axis=1)

可以看到,左右拼接合并时,是以Index作为拼接的关联值的;所以这个方法不是非常常用;因为不太好用;所以,可以忘记这里;
在这里插入图片描述

四、inner 与 outer 对比

join = 'outer' 就是默认值,所以上面所举的例子都是join = 'outer'的结果,两个参数的对比为:

参数说明
join = 'outer'保留所有的数据
join = 'inner'只保留共有信息

举例如下:
在这里插入图片描述

写在最后

pd.concat() 函数虽然参数参数有很多,但其实很多都不常用,常用的参数只有:axis,join ;所以只要知道这两个,一般情况下,就完全够用了;另外,pd.concat() 函数在通常情况下都只用于上下堆叠合并,所以其实我们只要知道上下堆叠合并,这一种使用方法就完全OK啦~

这里多余写这段话,主要就是想大家把精力放在重点上,避免在不重要的地方投入过多精力;

以上为个人理解,如有错误,还请不吝赐教,多多指导~~

相关文章:

  • 【Meetup预告】OpenMLDB+37手游:一键查收实时特征计算场景案例及进阶使用攻略
  • OPTEE:TA镜像的签名和加载-上(五)
  • mysql在django中开启事务,实现悲观锁和乐观锁
  • 极限多标签学习之-PLT
  • MMDetection系列 | 5. MMDetection运行配置介绍
  • java实现顺序表
  • 【英语:基础进阶_核心词汇扩充】E5.常见词根拓词
  • 命令执行漏洞——系统命令执行
  • 【数据结构与算法】List接口栈队列
  • 将cookie字符串转成editthiscookie插件的json格式
  • SpringAOP总结
  • python--数据容器--列表
  • Roson的Qt之旅 #119 QNetworkAddressEntry详细介绍
  • Mybatis -- 使用
  • C语言双链表,循环链表,静态链表讲解(王道版)
  • 【vuex入门系列02】mutation接收单个参数和多个参数
  • 2017年终总结、随想
  • 2019.2.20 c++ 知识梳理
  • 345-反转字符串中的元音字母
  • Computed property XXX was assigned to but it has no setter
  • EventListener原理
  • HTML中设置input等文本框为不可操作
  • Java IO学习笔记一
  • Java-详解HashMap
  • Octave 入门
  • rabbitmq延迟消息示例
  • Spring技术内幕笔记(2):Spring MVC 与 Web
  • Zsh 开发指南(第十四篇 文件读写)
  • 等保2.0 | 几维安全发布等保检测、等保加固专版 加速企业等保合规
  • 服务器从安装到部署全过程(二)
  • 讲清楚之javascript作用域
  • 解析带emoji和链接的聊天系统消息
  • 浅谈Kotlin实战篇之自定义View图片圆角简单应用(一)
  • 实战|智能家居行业移动应用性能分析
  • 使用putty远程连接linux
  • 思否第一天
  • 为视图添加丝滑的水波纹
  • ​第20课 在Android Native开发中加入新的C++类
  • (2)Java 简介
  • (9)目标检测_SSD的原理
  • (Matalb分类预测)GA-BP遗传算法优化BP神经网络的多维分类预测
  • (pojstep1.1.1)poj 1298(直叙式模拟)
  • (ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY)讲解
  • (附源码)springboot助农电商系统 毕业设计 081919
  • (全注解开发)学习Spring-MVC的第三天
  • (十八)devops持续集成开发——使用docker安装部署jenkins流水线服务
  • (十七)Flask之大型项目目录结构示例【二扣蓝图】
  • (转)C语言家族扩展收藏 (转)C语言家族扩展
  • (转)es进行聚合操作时提示Fielddata is disabled on text fields by default
  • (转)http协议
  • (转)visual stdio 书签功能介绍
  • (转)Windows2003安全设置/维护
  • (轉貼) 寄發紅帖基本原則(教育部禮儀司頒布) (雜項)
  • .htaccess配置重写url引擎
  • .Net Redis的秒杀Dome和异步执行