Python Merge函数原理及用法解析


Posted in Python onSeptember 16, 2020

Merge函数的用法

简单来说Merge函数相当于Excel中的vlookup函数。当我们对2个表进行数据合并的时候需要通过指定两个表中相同的列作为key,然后通过key匹配到其中要合并在一起的values值。

然后对于merge函数在Pandas中分为1vs1, 多(m)vs1,以及多(m)vs多(m)这三种场景。但是平时用的最多的往往是多vs1的这种场景。也就是说2个表中其中一个表作为key的值会出现重复,而另外一个表作为key的值则是唯一。

这种场景也很好理解。例如:我们在生产环境中对服务器进行管理,一台服务器上可能装了各种各样的软件。那么如果是Excel表格来管理的话一个软件就占用一行信息。而服务器名是相同的。所以一个相同的服务器名就会出现多个。

这台服务器上安装了多少个软件,服务器名就会重复几次,也就是最终有几行。那么另外一个表要想读取这台服务器上安装的所有软件,那么服务器名就要作为key,各个软件的信息则是value值。最终被读取写入的那张表的key只能唯一。

我们看下面这个案例,是真实多v1的案例。为了数据安全我只能把截图分享给大家,并把服务器名遮掩希望大家谅解。

数据表1:作为查询的总表,其中服务器名这列就是B列中的信息会出现重复

Python Merge函数原理及用法解析

数据表2:下表为按照表1的key就是hostname来匹配,匹配到后按照表2的列名来读取信息写入到表2.这里同上因为服务器名敏感,所以也用马赛克挡住了,忘谅解。

Python Merge函数原理及用法解析

代码演示:

1. 读取表1,表2中的内容,作为DataFrame赋值给变量

#%%

import pandas as pd

#读取表1
df01 = pd.read_excel("./datas/new_all_datas.xlsx",
           header=5)
df01.head()

#%%

#读取表2
df02 = pd.read_excel("./datas/new_software_InputSheet.xlsx")
df02

#%%

2. 通过merge函数合并两个DataFrame。on代表指明拿什么作为key来进行匹配。how这里分为left,right,inner,outer等方式。这里left代表按照表1为主表进行合并。

#%%
#ホスト名作为key来匹配两个表,相当于vlookup函数
#how=left代表以left左表为主,这里则代表表二为左表
df03 = pd.merge(df02,df01,on="ホスト名",how="left")
df03

结果:合并结果如下。但是因为表1,表2中出现重复元素的列名,因此合并后Pandas会按照后缀,把相同列名按照_x,_y的方式生成多列。

Python Merge函数原理及用法解析

3. 去除没用的列并按照条件查询想要的数据. 下列需求是按照服务器名,找出对应的"ソフトウェア名"也就是software名为Trend Micro的软件以及"ソフトウェア?造元"software制造商为Symantec的所有行。

#%%
#因为表中有相同的列名因此自动后缀被加上了_y
#下面代表筛选查询范围,以及指定查询值
df03 = df03.loc[:,["ホスト名","行番号","ソフトウェア区分_y","ソフトウェア名_y","ソフトウェアバ?ジョン_y","ソフトウェア?造元_y"]]
df04 = df03[(df03["ソフトウェア名_y"]=="Trend Micro") | (df03["ソフトウェア?造元_y"]=="Symantec")]

#重新把列名设定换一下然后输出
df04.columns = ["ホスト名","行番号","ソフトウェア区分","ソフトウェア名","ソフトウェアバ?ジョン","ソフトウェア?造元"]
df04

结果:

Python Merge函数原理及用法解析

4. 将数据导出到Excel文件

#%%

with pd.ExcelWriter("./datas/output_mergedatas.xlsx") as writer:
  df04.to_excel(writer,index=False)
  print("Done!!")

结果:当然也可以直接导入到数据表2中去。我这里为了不破坏原表,因此作为新的Excel表导出了。

Python Merge函数原理及用法解析

大家在日常业务中,如果遇到类似场景可以尝试通过merge函数来合并您的数据。还可以结合loc切片以及写下来要发表的pivot,pivot_table透视表来更加丰富的对数据进行清洗。

总体而言用惯了Pandas后会感觉相比Excel中的函数及宏。Pandas会更加的灵活也更加的强大。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python集合用法实例分析
May 30 Python
Python中函数的参数传递与可变长参数介绍
Jun 30 Python
浅谈python字典多键值及重复键值的使用
Nov 04 Python
使用Python编写Prometheus监控的方法
Oct 15 Python
python多线程并发让两个LED同时亮的方法
Feb 18 Python
python使用pymongo操作mongo的完整步骤
Apr 13 Python
Python3.5内置模块之os模块、sys模块、shutil模块用法实例分析
Apr 27 Python
python画图——实现在图上标注上具体数值的方法
Jul 08 Python
Django 拼接两个queryset 或是两个不可以相加的对象实例
Mar 28 Python
Python中三维坐标空间绘制的实现
Sep 22 Python
解决selenium+Headless Chrome实现不弹出浏览器自动化登录的问题
Jan 09 Python
Python中json.load()和json.loads()有哪些区别
Jun 07 Python
简单了解Python字典copy与赋值的区别
Sep 16 #Python
python 服务器运行代码报错ModuleNotFoundError的解决办法
Sep 16 #Python
pycharm2020.2 配置使用的方法详解
Sep 16 #Python
python Matplotlib模块的使用
Sep 16 #Python
Python类成员继承重写的实现
Sep 16 #Python
PyCharm设置注释字体颜色以及是否倾斜的操作
Sep 16 #Python
Python面向对象多态实现原理及代码实例
Sep 16 #Python
You might like
php中神奇的fastcgi_finish_request
2011/05/02 PHP
探讨:parse url解析URL,返回其组成部分
2013/06/14 PHP
Js保留小数点的4种效果实现代码分享
2014/04/12 Javascript
node.js中的forEach()是同步还是异步呢
2015/01/29 Javascript
jQuery过滤HTML标签并高亮显示关键字的方法
2015/08/07 Javascript
详解JavaScript中jQuery和Ajax以及JSONP的联合使用
2015/08/13 Javascript
如何屏蔽防止别的网站嵌入框架代码
2015/08/24 Javascript
bootstrap table表格使用方法详解
2017/04/26 Javascript
jquery easyui如何实现格式化列
2017/07/30 jQuery
Django中使用jquery的ajax进行数据交互的实例代码
2017/10/15 jQuery
实例详解Vue项目使用eslint + prettier规范代码风格
2018/08/20 Javascript
js图片无缝滚动插件使用详解
2020/05/26 Javascript
javascript设计模式 ? 桥接模式原理与应用实例分析
2020/04/13 Javascript
JavaScript实现移动端弹窗后禁止滚动
2020/05/25 Javascript
vue项目在webpack2实现移动端字体自适配功能
2020/06/02 Javascript
微信小程序实现导航栏和内容上下联动功能代码
2020/06/29 Javascript
[01:08:24]DOTA2-DPC中国联赛 正赛 RNG vs Phoenix BO3 第一场 2月5日
2021/03/11 DOTA
Python实现爬取知乎神回复简单爬虫代码分享
2015/01/04 Python
python下paramiko模块实现ssh连接登录Linux服务器
2015/06/03 Python
Python使用SocketServer模块编写基本服务器程序的教程
2016/07/12 Python
JavaScript实现一维数组转化为二维数组
2018/04/17 Python
python 读取修改pcap包的例子
2019/07/23 Python
使用pytorch实现可视化中间层的结果
2019/12/30 Python
python爬取youtube视频的示例代码
2021/03/03 Python
socket.io 和canvas 实现的共享画板功能
2019/05/22 HTML / CSS
美国一家主打母婴用品的团购网站:zulily
2017/09/19 全球购物
Brora官网:英国领先的羊绒服装品牌
2019/08/28 全球购物
经典c++面试题六
2012/01/18 面试题
编辑个人求职信范文
2013/09/21 职场文书
公司合作意向书
2014/04/01 职场文书
《沙漠中的绿洲》教学反思
2014/04/24 职场文书
ktv好的活动方案
2014/08/15 职场文书
学习党代会心得体会
2014/09/05 职场文书
生产操作工岗位职责
2014/09/16 职场文书
乡镇安全生产月活动总结
2015/05/08 职场文书
python多线程方法详解
2022/01/18 Python