一次性彻底讲透Python中pd.concat与pd.merge

news2024/10/1 9:33:44
目录
  • 数据拼接:pd.concat
  • 数据关联:pd.merge
  • 两者区别

数据的合并与关联是数据处理过程中经常遇到的问题,在SQL、HQL中大家可能都有用到 join、uion all 等 ,在 Pandas 中也有同样的功能,来满足数据处理需求,个人感觉 Pandas 处理数据还是非常方便,数据处理效率比较高,能满足不同的业务需求

数据拼接:pd.concat

concat 是pandas级的函数,用来拼接或合并数据,其根据不同的轴既可以横向拼接,又可以纵向拼接

函数参数

?

1

2

3

4

5

6

7

8

9

10

11

12

pd.concat(

    objs: 'Iterable[NDFrame] | Mapping[Hashable, NDFrame]',

    axis=0,

    join='outer',

    ignore_index: 'bool' = False,

    keys=None,

    levels=None,

    names=None,

    verify_integrity: 'bool' = False,

    sort: 'bool' = False,

    copy: 'bool' = True,

) -> 'FrameOrSeriesUnion'

  • objs:合并的数据集,一般用列表传入,例如:[df1,df2,df3]
  • axis:指定数据拼接时的轴,0是行,在行方向上拼接;1是列,在列方向上拼接
  • join:拼接的方式有 inner,或者outer,与sql中的意思一样

以上三个参数在实际工作中经常使用,其他参数不再做介绍

案例:

图片

模拟数据

横向拼接

图片

横向拼接-1

字段相同的列进行堆叠,字段不同的列分列存放,缺失值用NAN来填充,下面对模拟数据进行变换用相同的字段,进行演示

图片

横向拼接-2

纵向拼接

图片

纵向拼接

可以看出在纵向拼接的时候,会按索引进行关联,使相同名字的成绩放在一起,而不是简单的堆叠

数据关联:pd.merge

数据关联与SQL中的join基本一样,一次可以关联两个数据表,有左表、右表的区分,需要可以指定关联的字段

函数参数

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

pd.merge(

    left: 'DataFrame | Series',

    right: 'DataFrame | Series',

    how: 'str' = 'inner',

    on: 'IndexLabel | None' = None,

    left_on: 'IndexLabel | None' = None,

    right_on: 'IndexLabel | None' = None,

    left_index: 'bool' = False,

    right_index: 'bool' = False,

    sort: 'bool' = False,

    suffixes: 'Suffixes' = ('_x', '_y'),

    copy: 'bool' = True,

    indicator: 'bool' = False,

    validate: 'str | None' = None,

) -> 'DataFrame'

  • left:左表
  • right:右表
  • how:关联的方式,{‘left’, ‘right’, ‘outer’, ‘inner’, ‘cross’}, 默认关联方式为 ‘inner’
  • on:关联时指定的字段,两个表共有的
  • left_on:关联时用到左表中的字段,在两个表不共有关联字段时使用
  • right_on:关联时用到右表中的字段,在两个表不共有关联字段时使用

以上参数在实际工作中经常使用,其他参数不再做介绍

案例:

图片

数据关联

merge 的使用与SQL中的 join 很像,使用方式基本一致,既有内连接,也有外连接,用起来基本没有什么难度

两者区别

  • concat 只是 pandas 下的方法,而 merge 即是 pandas 下的方法,又是DataFrame 下的方法
  • concat 可以横向、纵向拼接,又起到关联的作用
  • merge 只能进行关联,也就是纵向拼接
  • concat 可以同时处理多个数据框DataFrame,而 merge 只能同时处理 2 个数据框

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/807336.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

感谢@中原一点红提供的华为OD机试真题2023Q1 100分“座位调整”,一看nike标志,就稳了

目录 专栏导读一、鸣谢二、题目描述三、输入描述四、输出描述五、思路分析解题思路 六、Java算法源码七、效果展示1、输入2、输出 华为OD机试 2023B卷题库疯狂收录中,刷题点这里 专栏导读 本专栏收录于《华为OD机试(JAVA)真题(A卷…

【动态规划part12】| 309.买卖股票的最佳时机含冷冻期、714.买卖股票的最佳时机含手续费

目录 🎈LeetCode309.最佳买卖股票时机含冷冻期 🎈LeetCode714.买卖股票的最佳时机含手续费 🎈LeetCode309.最佳买卖股票时机含冷冻期 给定一个整数数组prices,其中第 prices[i] 表示第 i 天的股票价格 。​ 设计一个算法计…

【Mysql】万字长文带你快速掌握数据库基础概念及SQL基本操作

文章目录 前言一、数据库相关概念1. 什么是数据库2. 数据库的种类3. Mysql 简介4. SQL简介5. 数据库中常见的数据类型 二、SQL基础1. SQL通用语法2. SQL的主要分类3. DDL(数据库,表,索引,视图)4. DML(数据的…

无涯教程-jQuery - Explode方法函数

爆炸效果可以与show/hide/toggle一起使用。这会将元素爆炸或分解为许多碎片。 Explode - 语法 selector.hide|show|toggle( "explode", {arguments}, speed ); 这是所有参数的描述- pieces - exploded/imploded次数。model - 动画的模式。可以设置为"…

需求分析案例:消息配置中心

本文介绍了一个很常见的消息推送需求,在系统需要短信、微信、邮件之类的消息推送时,边界如何划分和如何设计技术方案。 1、需求 一个系统,一般会区分多个业务模块,并拆分成不同的业务系统,例如一个商城的架构如下&am…

FreeRTOS之计数型信号量

什么是计数型信号量? 计数型信号量相当于队列长度大于1 的队列,因此计数型信号量能够容纳多个资源,这在计数型 信号量被创建的时候确定的。 计数型信号量相关 API SemaphoreHandle_t xSemaphoreCreateCounting( UBaseType_t uxMaxCount, U…

iOS开发-下拉刷新动画CAShapeLayer的strokeStart与strokeEnd指示器动画效果

iOS开发-下拉刷新动画CAShapeLayer的strokeStart与strokeEnd刷新指示器效果 之前开发中实现下拉刷新动画CAShapeLayer的strokeStart与strokeEnd指示器动画效果 一、效果图 二、基础动画 CABasicAnimation类的使用方式就是基本的关键帧动画。 所谓关键帧动画,就是…

Determinantal Point Process:机器学习中行列式的妙用

©PaperWeekly 原创 作者 | Yunpeng Tai 主页 | https://yunpengtai.top/ 在机器学习中,我们通常会面临一个问题:给定一个集合 ,从中寻找 个样本构成子集 ,尽量使得子集的质量高同时多样性好。比如在推荐系统中,…

AI绘画StableDiffusion实操教程:可爱头像奶茶小女孩(附高清图片)

本教程收集于:AIGC从入门到精通教程汇总 今天继续分享AI绘画实操教程,如何用lora包生成超可爱头像奶茶小女孩 放大高清图已放到教程包内,需要的可以自取。 欢迎来到我们这篇特别的文章——《AI绘画StableDiffusion实操教程:可爱…

element 时间插件 placement 报错

只需一个简单配置一下 align"center" 就不会再报错了,不需要升级element的版本

Vue 常用指令 v-on 自定义参数,事件修饰符

自定义参数就是可以在触发事件的时候传入自定义的值。 文本框,绑定了一个按钮事件,对应的逻辑是sayhi,现在无论按下什么按钮都会触发这个sayhi。但是实际上不是所有的按钮都会触发,只会限定某一些按钮,最常见的按钮就…

【C语言项目】多臂井径电子测井成像项目(一)

目录 1、目的和意义2、本章概述3、串口R2324、OpenGL5、开发环境6、环境配置6.1、VS安装OpenGL6.2、虚拟串口生成工具 7、成品速览参考文献 1、目的和意义 本项目为获取矿藏地层的油气当量和及时精确地测量含油、含气层的压力及温度值的需求,辅助生产管理人员完成对…

【Nginx】keepalived安装配置

环境说明 Centos 7版本 主机名 IP地址 其他 nginx 192.168.10.150 主 nginx-2 192.168.10.151 备 配置 主-192.168.10.150 [rootnginx ~]# yum install keepalived [rootnginx ~]# vim /etc/keepalived/keepalived.conf ! Configuration File for keepalived #定义全…

【2023Java 面试题全集】实用、全面、系统,助你一路通关!

前两个月,公司 java 岗位面了 50候选人,面试下来发现几类过不了的情况,分享大家防止踩坑: 新技术倒是掌握得挺多,基础的却一塌糊涂。 工作多年,从未学习过工作之外的技术栈,也没有对技术有任何…

Golang操作阿里云OSS上传文件

为什么要使用OSS?应用场景是什么? 最近在开发考试系统,里面需要上传课件,课件包括pdf,map等等各种类型的文件,这些文件不能像图片一样,直接上传到项目目录下面,需要单独存放&#x…

iOS开发-下拉刷新动画loading旋转指示器动画效果

iOS开发-下拉刷新动画loading旋转指示器动画效果 之前开发中实现下拉刷新动画loading旋转指示器动画效果 一、效果图 二、基础动画 CABasicAnimation类的使用方式就是基本的关键帧动画。 所谓关键帧动画,就是将Layer的属性作为KeyPath来注册,指定动画…

尚医通10:科室排班日期+科室排班详细数据+搭建平台用户系统前端环境

内容介绍 1、查看科室排班日期统计数据 2、查看科室排班详细数据 3、搭建平台用户系统前端环境 4、首页静态数据整合 5、首页数据显示接口 6、首页数据显示前端 查看科室排班日期统计数据 1确认需求 2、实现接口 1)分析接口 *参数:page、limit、h…

C语言基础入门详解一

前些天发现了一个蛮有意思的人工智能学习网站,8个字形容一下"通俗易懂,风趣幽默",感觉非常有意思,忍不住分享一下给大家。 👉点击跳转到教程 前言: 初识C语言 //#include 相当于java的import,stdio全称:st…

秒级体验本地调试远程 k8s 中的服务

点击上方蓝色字体,选择“设为星标” 回复”云原生“获取基础架构实践 背景 在这个以k8s为云os的时代,程序员在日常的开发过程中,肯定会遇到各种问题,比如:本地开发完,需要部署到远程k8s集群,本地…

【雕爷学编程】Arduino动手做(175)---机智云ESP8266开发板模块5

37款传感器与执行器的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是不止这37种的。鉴于本人手头积累了一些传感器和执行器模块,依照实践出真知(一定要动手做)的理念,以学习和交流为目的&am…