返回顶部
首页 > 资讯 > 后端开发 > Python >PythonPandas实现DataFrame合并的图文教程
  • 913
分享到

PythonPandas实现DataFrame合并的图文教程

2024-04-02 19:04:59 913人浏览 八月长安

Python 官方文档:入门教程 => 点击学习

摘要

目录一、merge(合并)的语法:二、以关键列来合并两个dataframe三、理解merge时数量的对齐关系1、one-to-one 一对一关系的merge2、one-to-many

一、merge(合并)的语法:

pd.merge(left, right, how='inner', on=None, left_on=None, right_on=None, left_index=False, right_index=False, sort=True, suffixes=('_x', '_y'), copy=True, indicator=False, validate=None)
参数介绍:
left,right:要merge的dataframe或者有name的Series
how:join类型,'left', 'right', 'outer', 'inner'
on:join的key,left和right都需要有这个key
left_on:left的df或者series的key
right_on:right的df或者seires的key
left_index,right_index:使用index而不是普通的column做join
suffixes:两个元素的后缀,如果列有重名,自动添加后缀,默认是('_x', '_y')

二、以关键列来合并两个dataframe

可以看到只有left和right的key1=y的行保留了下来,即默认合并后只保留有共同列项并且值相等行(即交集)。

本例中left和right的k1=y分别有2个,最终构成了2*2=4行

import pandas as pd
left = pd.DataFrame({'A': ['a0', 'a1', 'a2', 'a3'],
                     'B': ['b0', 'b1', 'b2', 'b3'],
                     'k1': ['x', 'x', 'y', 'y']})
right = pd.DataFrame({'C': ['c1', 'c2', 'c3', 'c4'],
                      'D': ['d1', 'd2', 'd3', 'd4'],
                      'k1': ['y', 'y', 'z', 'z']})

left

left

right

pd.merge(left, right, on=‘k1’)

三、理解merge时数量的对齐关系

one-to-one:一对一关系,关联的key都是唯一的
    比如(学号,姓名) merge (学号,年龄)
    结果条数为:1*1
one-to-many:一对多关系,左边唯一key,右边不唯一key
    比如(学号,姓名) merge (学号,[语文成绩、数学成绩、英语成绩])
    结果条数为:1*N
many-to-many:多对多关系,左边右边都不是唯一的
    比如(学号,[语文成绩、数学成绩、英语成绩]) merge (学号,[篮球、足球、乒乓球])
    结果条数为:M*N

1、one-to-one 一对一关系的merge

left = pd.DataFrame({'sno': [11, 12, 13, 14],
                      'name': ['name_a', 'name_b', 'name_c', 'name_d']
                    })
right = pd.DataFrame({'sno': [11, 12, 13, 14],
                      'age': ['21', '22', '23', '24']
                    })

left

right

# 一对一关系,结果中有4条
pd.merge(left, right, on='sno')

2、one-to-many 一对多关系的merge

注意:数据会被复制

left = pd.DataFrame({'sno': [11, 12, 13, 14],
                      'name': ['name_a', 'name_b', 'name_c', 'name_d']
                    })
right = pd.DataFrame({'sno': [11, 11, 11, 12, 12, 13],
                       'grade': ['语文88', '数学90', '英语75','语文66', '数学55', '英语29']
                     })

left

right

# 数目以多的一边为准
pd.merge(left, right, on='sno')

3、many-to-many 多对多关系的merge

注意:结果数量会出现乘法

left = pd.DataFrame({'sno': [11, 11, 12, 12,12],
                      '爱好': ['篮球', '羽毛球', '乒乓球', '篮球', "足球"]
                    })
right = pd.DataFrame({'sno': [11, 11, 11, 12, 12, 13],
                       'grade': ['语文88', '数学90', '英语75','语文66', '数学55', '英语29']
                     })

left

right

pd.merge(left, right, on=‘sno’)

四、理解left join、right join、inner join、outer join的区别

left = pd.DataFrame({'key': ['K0', 'K1', 'K2', 'K3'],
                      'A': ['A0', 'A1', 'A2', 'A3'],
                      'B': ['B0', 'B1', 'B2', 'B3']})

right = pd.DataFrame({'key': ['K0', 'K1', 'K4', 'K5'],
                      'C': ['C0', 'C1', 'C4', 'C5'],
                      'D': ['D0', 'D1', 'D4', 'D5']})

left

right

1、inner join,默认

左边和右边的key都有,才会出现在结果里

pd.merge(left, right, how='inner')

2、left join

左边的都会出现在结果里,右边的如果无法匹配则为Null

pd.merge(left, right, how='left')

3、 right join

右边的都会出现在结果里,左边的如果无法匹配则为Null

pd.merge(left, right, how='right')

4、 outer join

左边、右边的都会出现在结果里,如果无法匹配则为Null

pd.merge(left, right, how='outer')

五、如果出现非Key的字段重名怎么办

left = pd.DataFrame({'key': ['K0', 'K1', 'K2', 'K3'],
                      'A': ['A0', 'A1', 'A2', 'A3'],
                      'B': ['B0', 'B1', 'B2', 'B3']})

right = pd.DataFrame({'key': ['K0', 'K1', 'K4', 'K5'],
                      'A': ['A10', 'A11', 'A12', 'A13'],
                      'D': ['D0', 'D1', 'D4', 'D5']})

left

right

pd.merge(left, right, on='key')

pd.merge(left, right, on='key', suffixes=('_left', '_right'))

总结

到此这篇关于Pandas实现DataFrame合并的文章就介绍到这了,更多相关Pandas DataFrame合并内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: PythonPandas实现DataFrame合并的图文教程

本文链接: https://lsjlt.com/news/119655.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • PythonPandas实现DataFrame合并的图文教程
    目录一、merge(合并)的语法:二、以关键列来合并两个dataframe三、理解merge时数量的对齐关系1、one-to-one 一对一关系的merge2、one-to-many...
    99+
    2024-04-02
  • Pandas实现Dataframe的合并
    目录简介使用concat使用append使用merge使用join覆盖数据简介 Pandas提供了很多合并Series和Dataframe的强大的功能,通过这些功能可以方便的进行数据...
    99+
    2024-04-02
  • pyspark dataframe列的合并与拆分实例
    目录pyspark dataframe列的合并与拆分dataframe列数据的分割dataframe列数据的拆分dataframe将一行分成多行dataframe列数据的合并data...
    99+
    2023-03-23
    pyspark dataframe dataframe列的合并 dataframe列的拆分
  • java集合类图文教程
    java集合类详解:(推荐:java视频教程)java集合类图上述类图中,实线边框的是实现类,比如ArrayList,LinkedList,HashMap等,折线边框的是抽象类,比如AbstractCollection,AbstractLi...
    99+
    2022-02-02
    java
  • Windows 7合并或删除网络位置图文教程
    打开网络和共享中心, 在查看活动网络一栏中,点击活动网络的图标,记得是那个图标而不是文字,然后选择合并或删除网络位置。 如下图所示: ...
    99+
    2023-05-29
    win7 网络位置 网络 位置 教程 图文
  • 教你用Python代码实现合并excel文件
    目录一、安装模块二、XlsxWriter 示例三、合并Excel数据四、表头都一样的 excel五、表头都不一样的 excel六、合并后的结果一、安装模块 1、找到对应的模块 htt...
    99+
    2024-04-02
  • pandas中DataFrame数据合并连接的实例分析
    这篇文章主要介绍了pandas中DataFrame数据合并连接的实例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。pandas作者Wes McKinney 在【PYTHO...
    99+
    2023-06-15
  • python实现文本文件合并
    python合并文本文件示例代码。 python实现两个文本合并 employee文件中记录了工号和姓名 cat employee.txt: 100 Jason Smith 200 John Doe...
    99+
    2022-06-04
    文本 文件合并 python
  • PHP怎么实现图片合并
    本篇内容介绍了“PHP怎么实现图片合并”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!准备工作需要海报的底图小程序码的图片 代码部分...
    99+
    2023-07-05
  • Windows中Tomcat整合到Eclipse的图文教程
    这里使用的是Eclipse Java EE IDE for Web Developers 4.7.1a,Apache Tomcat 8.0.47。两个都依赖JDK,请事先安装配置好JDK。首先,要下载tomcat,下载地址:https://...
    99+
    2023-05-31
    windows tomcat 整合
  • uniapp实现地图点聚合功能的详细教程
    目录任务效果图生成页面顶部标题tab切换地图画布map.html页面设置实现页面通信,分解url参数初始化地图点聚合功能实现搜索功能实现总结任务 在工作中接到的一个任务,在app端实...
    99+
    2022-12-10
    uniapp实现地图点聚合 uniapp地图点聚合 uniapp实例教程
  • MySQL实现字符串截取的图文教程
    目录前言接下来我们就以第二种方式为列进行总结附:mysql相关字符串截取的函数详解总结 前言 在后端开发过程中与数据库打交道乃是家常便饭,有时候会遇到只要数据库中的某条数据...
    99+
    2024-04-02
  • 帝国CMS6.6 整合Ucenter接口的图文教程
    帝国cms整合Discuz有两种方式:方式一、用Ucenter接口整合。使用Ucenter接口整合无需安装通行证跟万能会员接口。方式二、用Discuz通行证接口整合。需先安装万能会员接口,然后再安装通行证。Ucenter...
    99+
    2022-06-12
    帝国CMS 整合 Ucenter
  • Qt连接数据库并实现数据库增删改查的图文教程
    目录1.连接数据库2.查询数据库并显示在QTableView上3.添加4.修改5.删除6.总代码总结根据自己学习的内容,有关QTableView显示数据库,并实现数据库的增删改查,在...
    99+
    2023-05-16
    qt连接数据库 qt对数据库的增删改查 qt怎么连接数据库
  • Java实现文件的分割与合并
    本文实例为大家分享了Java实现文件的分割与合并的具体代码,供大家参考,具体内容如下 一、文件分割实现思想 1、设置分割文件(块)的大小; 2、通过输入流获取源文件的大小; 3、...
    99+
    2024-04-02
  • Python怎么实现Excel文件的合并
    本文小编为大家详细介绍“Python怎么实现Excel文件的合并”,内容详细,步骤清晰,细节处理妥当,希望这篇“Python怎么实现Excel文件的合并”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。一、单目录下面...
    99+
    2023-06-29
  • Flutter实现图文并茂的列表
    目录界面布局分析 ListView 简介 编码实现 用到的组件 结语: 界面布局分析 本篇要实现的列表如上图所示。我们拿到界面设计稿之后,在 UI 开发工作第一件事就是考虑界面的元...
    99+
    2024-04-02
  • Springboot整合minio实现文件服务的教程详解
    首先pom文件引入相关依赖 <!--minio--> <dependency> <groupId...
    99+
    2024-04-02
  • Python实现人脸识别的详细图文教程
    目录叨叨几句准备工作代码流程总结叨叨几句 哈喽兄弟们,今天实现一下人脸识别。 先问大家一个问题 什么是百度Aip模块? 百度AI平台提供了很多的API接口供开发者快速的调用运用在项目...
    99+
    2024-04-02
  • PostgreSQL 聚合函数的实现教程
    本篇内容主要讲解“PostgreSQL 聚合函数的实现教程”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“PostgreSQL 聚合函数的实现教程”吧!一、数据结...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作