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创建xml的方法
Mar 10 Python
python处理csv数据的方法
Mar 11 Python
Python监控主机是否存活并以邮件报警
Sep 22 Python
Python构造自定义方法来美化字典结构输出的示例
Jun 16 Python
简单实现python进度条脚本
Dec 18 Python
python基础教程项目二之画幅好画
Apr 02 Python
python实现简单淘宝秒杀功能
May 03 Python
python实现傅里叶级数展开的实现
Jul 21 Python
对python 读取线的shp文件实例详解
Dec 22 Python
python 正则表达式参数替换实例详解
Jan 17 Python
Django搭建项目实战与避坑细节详解
Dec 06 Python
python 指定源路径来解决import问题的操作
Mar 04 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
业余方法DIY电子管FM收音机
2021/03/02 无线电
PHP filter_var() 函数 Filter 函数
2012/04/25 PHP
PHP中遇到BOM、编码导致json_decode函数无法解析问题
2014/07/02 PHP
ThinkPHP实例化模型的四种方法概述
2014/08/22 PHP
Smarty模板常见的简单应用分析
2016/11/15 PHP
laravel orm 关联条件查询代码
2019/10/21 PHP
判断一个变量是数组Array类型的方法
2013/09/16 Javascript
Javascript小技巧之生成html元素
2014/05/15 Javascript
js实现文字跑马灯效果
2017/02/23 Javascript
jQuery实现贪吃蛇小游戏(附源码下载)
2017/03/04 Javascript
详解设置Webstorm 利用babel将ES6自动转码成ES5
2017/12/20 Javascript
在vue中使用vue-echarts-v3的实例代码
2018/09/13 Javascript
对angular4子路由&辅助路由详解
2018/10/09 Javascript
node链接mongodb数据库的方法详解【阿里云服务器环境ubuntu】
2019/03/07 Javascript
[42:22]DOTA2上海特级锦标赛C组小组赛#1 OG VS Archon第一局
2016/02/27 DOTA
[49:02]KG vs Infamous 2019国际邀请赛淘汰赛 败者组BO1 8.20.mp4
2020/07/19 DOTA
python dict remove数组删除(del,pop)
2013/03/24 Python
python3使用tkinter实现ui界面简单实例
2014/01/10 Python
Python的Django框架中设置日期和字段可选的方法
2015/07/17 Python
Python实现并行抓取整站40万条房价数据(可更换抓取城市)
2016/12/14 Python
Python 实现王者荣耀中的敏感词过滤示例
2019/01/21 Python
Python3.5内置模块之os模块、sys模块、shutil模块用法实例分析
2019/04/27 Python
python-django中的APPEND_SLASH实现方法
2019/06/21 Python
使用pyqt5 tablewidget 单元格设置正则表达式
2019/12/13 Python
python定义类self用法实例解析
2020/01/22 Python
Python 实现日志同时输出到屏幕和文件
2020/02/19 Python
vscode调试django项目的方法
2020/08/06 Python
python两种获取剪贴板内容的方法
2020/11/06 Python
全面解析CSS Media媒体查询使用操作(推荐)
2017/08/15 HTML / CSS
用HTML5实现鼠标滚轮事件放大缩小图片的功能
2015/06/25 HTML / CSS
香港草莓网:Strawberrynet香港
2019/05/10 全球购物
光信息科学与技术专业职业生涯规划
2014/03/13 职场文书
中学生评语大全
2014/04/18 职场文书
敬老院活动总结
2014/04/28 职场文书
2014年绿化工作总结
2014/12/09 职场文书
python机器学习Github已达8.9Kstars模型解释器LIME
2021/11/23 Python