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通过cookie模拟已登录状态的初步研究
Nov 09 Python
python解决js文件utf-8编码乱码问题(推荐)
May 02 Python
python之验证码生成(gvcode与captcha)
Jan 02 Python
浅谈python标准库--functools.partial
Mar 13 Python
Python3.5模块的定义、导入、优化操作图文详解
Apr 27 Python
windows上安装python3教程以及环境变量配置详解
Jul 18 Python
Python Threading 线程/互斥锁/死锁/GIL锁
Jul 21 Python
Python 使用 environs 库定义环境变量的方法
Feb 25 Python
python+opencv实现移动侦测(帧差法)
Mar 20 Python
python定义具名元组实例操作
Feb 28 Python
python中sys模块的介绍与实例
Apr 17 Python
基于PyQt5制作一个群发邮件工具
Apr 08 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文档工具PHP Documentor安装与使用方法
2016/01/25 PHP
php自定义函数实现二维数组排序功能
2016/07/20 PHP
Javascript 兼容firefox的一些问题
2009/05/21 Javascript
JavaScript类和继承 this属性使用说明
2010/09/03 Javascript
jquery选择器(常用选择器说明)
2010/09/28 Javascript
一个js控制的导航菜单实例代码
2013/12/03 Javascript
使用原生js封装webapp滑动效果(惯性滑动、滑动回弹)
2014/05/06 Javascript
jQuery中:contains选择器用法实例
2014/12/30 Javascript
使用基于Node.js的构建工具Grunt来发布ASP.NET MVC项目
2016/02/15 Javascript
Node.js文件操作方法汇总
2016/03/22 Javascript
javascript中的 object 和 function小结
2016/08/14 Javascript
js实现带三角符的手风琴效果
2017/03/01 Javascript
JavaScript全屏和退出全屏事件总结(附代码)
2017/08/17 Javascript
使用vue实现简单键盘的示例(支持移动端和pc端)
2017/12/25 Javascript
layui表单提交到后台自动封装到实体类的方法
2019/09/12 Javascript
jQuery 选择器用法基础入门示例
2020/01/04 jQuery
Vue 组件的挂载与父子组件的传值实例
2020/09/02 Javascript
[46:02]DOTA2上海特级锦标赛D组资格赛#2 Liquid VS VP第二局
2016/02/28 DOTA
[02:52]2017DOTA2国际邀请赛中国区预选赛晋级之路
2017/07/03 DOTA
在CentOS6上安装Python2.7的解决方法
2018/01/09 Python
Python Unittest根据不同测试环境跳过用例的方法
2018/12/16 Python
python 内置模块详解
2019/01/01 Python
python 发送和接收ActiveMQ消息的实例
2019/01/30 Python
Django框架 查询Extra功能实现解析
2019/09/04 Python
pygame实现俄罗斯方块游戏(基础篇3)
2019/10/29 Python
pygame库实现移动底座弹球小游戏
2020/04/14 Python
在Python中等距取出一个数组其中n个数的实现方式
2019/11/27 Python
台湾网友喜爱的综合型网路购物商城:Yahoo! 奇摩购物中心
2018/03/10 全球购物
网上快餐厅创业计划书
2014/02/01 职场文书
赔偿协议书范本
2014/04/15 职场文书
小学生安全演讲稿
2014/04/25 职场文书
数据保密承诺书
2014/06/03 职场文书
销售队伍口号
2014/06/11 职场文书
学生吸烟检讨书
2014/09/14 职场文书
如何解决springcloud feign 首次调用100%失败的问题
2021/06/23 Java/Android
python使用opencv对图像添加噪声(高斯/椒盐/泊松/斑点)
2022/04/06 Python