merge 操作|学习笔记

简介: 快速学习 merge 操作

开发者学堂课程【Python 常用数据科学库:merge 操作】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址https://developer.aliyun.com/learning/course/546/detail/7484


merge 操作

内容介绍

一、merge 函数基本操作

二、总结


一、merge 函数基本操作

1、基本合并。

在 pandas 当中,有一个非常重要的函数叫 merge 操作,这个操作跟数据库操作比较相关,但其实在 pandas 当中有很多功能都是跟数据库相关的,因为都要去操纵数据。首先把 pandas 导进来,先做两份数据

import pandas as  pd

left = pd.DataFrame({'key':['K0' K1'.K2',‘K3'],

'A':['A0','A1' A2' A3'].

'B':['B0', 'B1', 'B2' ,'B3']})

right = pd.DataFrame({'key':[' K0'. 'K1' ,'K2' K3'],

'C':['C0','C1'.,'C2','C3'],

'D':['D0’,'D1’,'D2','D3']})

 image.png

image.png

然后把这两个表进行合并,可以直接 merge,把左表和右表传进来,这两个就相当于需要的两个参数,默认情况下它会让指定left等于什么,right 等于什么,相当于两个表之间进行合并,不写前面的参数也可以,前两个参数就是左表和右表都给传进去

pd.merge( left,right)

这就完成了,然后看结果。

image.png

但是当前的结果,只有一个 key,这样就完成了一个最基本操作。然后它也会默认按什么进行合并,左表和右表有相同的,就合并在一起了,这个是直接的写法。

2、参数 on。on 的意思就是你要以什么为键进行合并,一般情况下需要自己给它指定,以 key 为键进行合并

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

还是这个结果,只不过是写法更完善了一些。左表右表索引或者一些关键的指标可能是一样的,通过这个指标来进行合并,这个就是 merge 最基本的一个方法。

如果现在问题变了,有两个 key,在合并的时候就需要一些其他的策略。

left = pd.DataFrame({'key1':['K0' K1'.K2',‘ K3'],

'key2':['K0' K1'.K2',‘ K3']

'A':['A0','A1' A2' A3'].

'B':['B0', 'B1', 'B2' ,'B3']})

right = pd.DataFrame({'key1':[' K0'. 'K1' ,'K2' K3'],

'key1':[' K0'. 'K1' ,'K2' K3'],

'C':['C0','C1'.,'C2','C3'],

'D':['D0’,'D1’,'D2','D3']})

 image.png        

image.png

结果没有什么变化,就是多了两列,然后就可以执行 merge 操作,on 的时候可以指定,比如说 on key1

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

出现这样一个结果

image.png

key1只有一个,还有 key2_x和 key_y 这就是说现在是以 key1为键进行合并的, key2虽然名字相同了,但是认为它是不同的东西,所以有 key2_x和 key_y。这就是说,如果以其中一个 key 为键,但另外一个如果是相同的,后面会多出来一个后缀。以后用到的数据如果出现 _x,_y,基本上就是合并的时候它有重复的关键字,但是它不是键,这样造成的。

同时以 key1,key2为键,执行一下,这回只有一个 key1和 key2,ABCD 都拿出来了,

把 right 中 key2里的 K3改成 K4,让它在 key1上是完全一样的,key2上有一些区别,这样难度就增加了。运行后的结果

image.png

得到的结果少了一行,因为它俩不一致,一致的才可以 merge,不一致的就没有merge。所以 merge 函数,默认情况下会这样:如果指定了多个 key,多个 key 当中有一些不一样的数据,接下来在 merge 的时候不一样的就会被过滤掉,一样的就被保留下来了。

3、how 指定。过滤掉好像是求了一个交集,如果保留起来就相当于求了一个并集,可以在这里指定一种方式,指定一个 how,how 里指定一个 outer、outer 相当于是一个并集

pd.merge(left,right,on=['key1','key2' ],how=' outer')

image.png

再来看一下结果,这个时候 ABCD、key1、key2都有了。

原来应该是四条数据,现在是五个数据,也就是说把所有情况都考虑进来了。K3K3是一种情况,K3K4又 是一种情况,只不过加上 NaN 值,相当于在 merge 的时候,你先写一个左边连什么表,右边连什么表,连的一个 key 值应该是什么,连接的方式默认情况下它一个交集,想指定一个并集也是可以的。并集当中会出现一些缺失值,因为本身它里面没有值,所以说就出现了这样一种情况。

4、指示器。交集并集可以指定一个指示器,这个指示器它会告诉你当前这个指标它是一个交集还是并集。

pd.merge(left, right,on=['key1','key2'],how=' outer', indicator = True)

加上之后再来执行一下。

image.png

both 是左右都有的, left _only 是只有左表有值,right_only 只有右表有值。所以说再加上这样一个参数,相当于是告诉了 merge 完后,它是按照什么情况做的。

然后这里还可以再指定一个东西,how 里不只可以指定交集并集,还可以指定以左表为基准还是以右表为基准。以左表为基准的时候,它会把左表中所有的键都保留下来,右表当中的键,没有保留下来。


二、总结。

这个就是在 pandas 中比较常用的一个函数 merge 函数。比如说分模块去提取一些特征,然后把特征进行合并,合并的时候需要有一些策略,基本上是用 merge 函数完成的。然后 left,right 两个表,on 是以什么为键,how 相当于是指定什么样的方式,这就是 merge 函数的一个基本用法。

相关文章
|
11月前
|
人工智能 并行计算 PyTorch
SPRIGHT:提升文本到图像模型空间一致性的数据集
SPRIGHT 是一个专注于空间关系的大型视觉-语言数据集,通过重新描述600万张图像,显著提升文本到图像模型的空间一致性。
236 18
SPRIGHT:提升文本到图像模型空间一致性的数据集
|
4月前
|
人工智能 数据可视化 API
2025大语言模型部署实战指南:从个人笔记本到企业级服务的全栈方案
本文深度解析四大主流大模型部署框架,覆盖个人开发、边缘设备与高并发生产场景。从Ollama、llama.cpp到vLLM与LM Studio,助你精准匹配技术方案,实现高效部署。
|
10月前
|
机器学习/深度学习 人工智能 前端开发
FacePoke:开源AI实时面部编辑神器!拖拽调整表情/头部朝向,4K画质一键生成
FacePoke是一款基于AI技术的开源实时面部编辑工具,支持通过拖拽操作调整头部朝向和面部表情,适用于多种场景。
756 0
|
存储 缓存 Java
大厂面试高频:Volatile 的实现原理 ( 图文详解 )
本文详解Volatile的实现原理(大厂面试高频,建议收藏),涵盖Java内存模型、可见性和有序性,以及Volatile的工作机制和源码案例。关注【mikechen的互联网架构】,10年+BAT架构经验倾囊相授。
大厂面试高频:Volatile 的实现原理 ( 图文详解 )
|
机器学习/深度学习 数据采集 存储
通义千问 Qwen 在智能文本分析中的应用实践
本文探讨了通义千问Qwen在智能文本分析的应用,涵盖文本分类、情感分析及关键信息提取,通过具体案例和代码实现,展示了Qwen的强大语言理解能力,为开发者和研究人员提供了实用参考。
|
前端开发 JavaScript 搜索推荐
微服务项目|基于SpringCloud微服务技术的旅游信息平台的设计与实现
微服务项目|基于SpringCloud微服务技术的旅游信息平台的设计与实现
572 1
|
Ubuntu Linux Python
Ubuntu学习笔记(六):ubuntu切换Anaconda和系统自带Python
本文介绍了在Ubuntu系统中切换Anaconda和系统自带Python的方法。方法1涉及编辑~/.bashrc和/etc/profile文件,更新Anaconda的路径。方法2提供了详细的步骤指导,帮助用户在Anaconda和系统自带Python之间进行切换。
566 1
|
Kubernetes 网络安全 Docker
在k8S中,Worker节点加入集群的过程是什么?
在k8S中,Worker节点加入集群的过程是什么?
|
SQL 数据管理 数据处理
Python生成SQL语句
【7月更文挑战第3天】Python在数据处理中常用于自动生成SQL语句,提高效率,减少错误,增强灵活性。通过Python,可以方便地创建、插入、更新和删除数据库记录。示例代码展示了如何使用sqlite3库连接SQLite数据库,生成查询、插入、更新和删除语句。此外,还提到了使用SQLAlchemy和Peewee等ORM工具简化SQL操作。通过自定义SQL语句生成器,可以进一步定制化SQL构造,适应不同场景。使用参数化查询可避免SQL注入,保证安全性。
游戏陪玩系统源码如何开发,实现游戏陪玩和游戏社交兼顾?
游戏市场的火热,吸引了很多资本的目光,各种赛事的激烈竞争,也燃起了年轻人对游戏的热情。在游戏市场飞速发展带动的周边业务中,游戏陪玩系统源码的开发备受瞩目。作为游戏陪玩行业发展的基石,游戏陪玩系统源码的开发在近几年经历了多次变革,最终形成了游戏陪玩+游戏社交的全新模式。