pandas数据的合并concat()和merge()方式

2025-08-03 09:50

本文主要是介绍pandas数据的合并concat()和merge()方式,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

《pandas数据的合并concat()和merge()方式》Pandas中concat沿轴合并数据框(行或列),merge基于键连接(内/外/左/右),concat用于纵向或横向拼接,merge用于...

import pandas as pd
  • 轴向连接(concatenation): pd.concat() 可以沿一个轴将多个DataFrame对象连接在一起, 形成一个新的Dataframe对象
  • 融合(merging):pd.merge()方法可以根据一个或多个键将不同DataFrame中的行连接起来。

concat() 轴向连接

concat() 函数可以将数据根据不同的轴作进行合并

pd.concat(objs, axis=0, join='outer')
  • objs: series、dataframe或者是panel构成的序列list
  • axis: 需要合并链接的轴,0是行,1是列,默认是0
  • join:连接的方式 inner,或者outer,默认是outer

准备数据

dict1={
    'A': ['A0', 'A1', 'A2', 'A3'],
    'B': ['B0', 'B1', 'B2', 'B3'],
    'C': ['C0', 'C1', 'C2', 'C3']}
df1=pd.DataFrame(dict1)
print(df1)

dict2={
    'B': ['B0', 'B1', 'B2', 'B3'],
    'Cpython': ['C0', 'C1', 'C2', 'C3'],
    'D': ['D0', 'D1', 'D2', 'D3']}
df2=pd.DataFrame(dict2)
print(df2)

合并

join的值 inner ,得到的是两表的交集,如果是outer,得到的是两表的并集

(1) join='outer',axis=0

  • 当join=‘outer’,axis参数为0时,列进行并集处理,纵向表拼接,缺失值由NaN填充,并且会保留原有数据的行索引
pd.concat([df1, df2], axis=0, join='outer', sort=True) # 我没加 sort=True 会报一个警告

pandas数据的合并concat()和merge()方式

ABCD
0A0B0C0NaN
1A1B1C1NaN
2A2B2C2NaN
3A3B3C3NaN
0NaNB0C0D0
1NaNB1C1D1
2NaNB2C2D2
3NaNB3C3D3
  • 如果两个表的index都没有实际含义, 使用ignore_index参数置为 true, 重新生成一个新的index
pd.concat([df1,df2],axis=0,join='outer',ignore_index=True, sort=True) # 我没加 sortjs=True 会报一个警告
ABCD
0A0B0C0NaN
1A1B1C1NaN
2A2B2C2NaN
3A3B3C3NaN
4NaNB0C0D0
5NaNB1C1D1
6NaNB2C2D2
7NaNB3C3D3

(2)join='outer',axis=1

  • 当join=‘outer’,axis参数为1时,行进行并集处理,横向表拼接,缺失值由NaN填充

pandas数据的合并concat()和merge()方式

pd.concat([df1,df2],axis=1,join='outer', sort=True) # 我没加 sort=True 会报一个警告
ABCBCD
0A0B0C0B0C0D0
1A1B1C1B1C1D1
2A2B2C2B2C2D2
3A3B3C3B3C3D3

(3) join=inner, axis=0

javascript
pd.concat([df1,df2],axis=0,join='inner',ignore_index=True)

pandas数据的合并concat()和merge()方式

BC
0B0C0
1B1C1
2B2C2
3B3C3
4B0C0
5B1C1
6B2C2
7B3C3

merge() 融合

merge(left, right, how='inner', on=None)

参数介绍

  • left和right, 两个要合并的DataFrame(对应的左连接和右连接)
  • how: 连接的方式, 有inner(内连接)、left(左连接)、right(右连接)、outer(外连接), 默认为 inner
  • on: 指的是用于连接的列索引名称, 必须存在于左右两个DataFrame中, 如果没有指定且其他参数也没有指定,则两个DataFrame列名交集作为连接键
import pandas as pd
left = pd.DataFrame({'key':['a','b','b','d'],'data1':range(4)})
print(left)

right = pd.DataFrame({'key':['a','b','c'],'data2':range(3)})
print(right)
  key  data1
0   a      0
1   b      1
2   b      2
3   d      3
  key  data2
0   a      0
1   b      1
2   c      2

inner(内连接)

  • merge()默认做inner连接,并且使用两个DataFrame的列名交集(key)作为连接键,同样,最终连接的数据也是两个DataFramekey列数据的交集

pandas数据的合并concat()和merge()方式

pd.merge(left,right)
keydata1data2
0a00
1b11
2b21

outer (外连接)

  • 当merge()做outer连接时最终连接的数据是两个DataFraTNBsGmekey列数据的并集,缺失的内容由NaN填充
pd.merge(left,right,on=['key'],how='outer')

pandas数据的合并concat()和merge()方式

keydata1data2
0a0.00.0
1b1.01.0
2b2.01.0
3d3.0NaN
4cNaN2.0

left(左连接)

  • 当merge()做left连接时,最终连接的数据将以left数据的链接建为准合并两个数据的列数据,缺失的内容由NaN填充

pandas数据的合并concat()和merge()方式

pd.merge(left,right,on=['key'],how='left')
keydata1data2
0a00.0
1b11.0
2b21.0
3d3NaN

right (右连接)

  • 当merge()做right连接时,最终连接的数据将以right数据的链接建为准合并两个数据的列数据,缺失的内容由NaN填充
pd.merge(left,right,on=['key'],how='China编程right')
keydata1data2
0a0.00
1b1.01
2b2.01
3cNaN2

应用场景

例如:

  • 现在有两张表格分别存储了9月和10月份的成交信息,
  • 那么这个时候我们就可以使用concat( )将两个表沿着0轴合并

例如:

  • 现在有两张表格,一个是成交信息,包含订单号、金额、客户ID等信息;
  • 第二个是客户信息,包含客户ID、姓名、电话号等信息,那么这个时候我们就可以使用merge()根据客户ID将两个表合并成一个完整的表

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持编程China编程(www.chinasem.cn)。

这篇关于pandas数据的合并concat()和merge()方式的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1155568

相关文章

Java AOP面向切面编程的概念和实现方式

《JavaAOP面向切面编程的概念和实现方式》AOP是面向切面编程,通过动态代理将横切关注点(如日志、事务)与核心业务逻辑分离,提升代码复用性和可维护性,本文给大家介绍JavaAOP面向切面编程的概... 目录一、AOP 是什么?二、AOP 的核心概念与实现方式核心概念实现方式三、Spring AOP 的关

Linux下利用select实现串口数据读取过程

《Linux下利用select实现串口数据读取过程》文章介绍Linux中使用select、poll或epoll实现串口数据读取,通过I/O多路复用机制在数据到达时触发读取,避免持续轮询,示例代码展示设... 目录示例代码(使用select实现)代码解释总结在 linux 系统里,我们可以借助 select、

Linux挂载linux/Windows共享目录实现方式

《Linux挂载linux/Windows共享目录实现方式》:本文主要介绍Linux挂载linux/Windows共享目录实现方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地... 目录文件共享协议linux环境作为服务端(NFS)在服务器端安装 NFS创建要共享的目录修改 NFS 配

Vue3视频播放组件 vue3-video-play使用方式

《Vue3视频播放组件vue3-video-play使用方式》vue3-video-play是Vue3的视频播放组件,基于原生video标签开发,支持MP4和HLS流,提供全局/局部引入方式,可监听... 目录一、安装二、全局引入三、局部引入四、基本使用五、事件监听六、播放 HLS 流七、更多功能总结在 v

Java发送SNMP至交换机获取交换机状态实现方式

《Java发送SNMP至交换机获取交换机状态实现方式》文章介绍使用SNMP4J库(2.7.0)通过RCF1213-MIB协议获取交换机单/多路状态,需开启SNMP支持,重点对比SNMPv1、v2c、v... 目录交换机协议SNMP库获取交换机单路状态获取交换机多路状态总结交换机协议这里使用的交换机协议为常

Python的pandas库基础知识超详细教程

《Python的pandas库基础知识超详细教程》Pandas是Python数据处理核心库,提供Series和DataFrame结构,支持CSV/Excel/SQL等数据源导入及清洗、合并、统计等功能... 目录一、配置环境二、序列和数据表2.1 初始化2.2  获取数值2.3 获取索引2.4 索引取内容2

k8s admin用户生成token方式

《k8sadmin用户生成token方式》用户使用Kubernetes1.28创建admin命名空间并部署,通过ClusterRoleBinding为jenkins用户授权集群级权限,生成并获取其t... 目录k8s admin用户生成token创建一个admin的命名空间查看k8s namespace 的

uni-app小程序项目中实现前端图片压缩实现方式(附详细代码)

《uni-app小程序项目中实现前端图片压缩实现方式(附详细代码)》在uni-app开发中,文件上传和图片处理是很常见的需求,但也经常会遇到各种问题,下面:本文主要介绍uni-app小程序项目中实... 目录方式一:使用<canvas>实现图片压缩(推荐,兼容性好)示例代码(小程序平台):方式二:使用uni

C#使用iText获取PDF的trailer数据的代码示例

《C#使用iText获取PDF的trailer数据的代码示例》开发程序debug的时候,看到了PDF有个trailer数据,挺有意思,于是考虑用代码把它读出来,那么就用到我们常用的iText框架了,所... 目录引言iText 核心概念C# 代码示例步骤 1: 确保已安装 iText步骤 2: C# 代码程

Pandas处理缺失数据的方式汇总

《Pandas处理缺失数据的方式汇总》许多教程中的数据与现实世界中的数据有很大不同,现实世界中的数据很少是干净且同质的,本文我们将讨论处理缺失数据的一些常规注意事项,了解Pandas如何表示缺失数据,... 目录缺失数据约定的权衡Pandas 中的缺失数据None 作为哨兵值NaN:缺失的数值数据Panda