python中merge函数怎么用_Python Merge函数原理及用法解析

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列中的信息会出现重复

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

代码演示:

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的方式生成多列。

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

结果:

4. 将数据导出到Excel文件

#%%

with pd.ExcelWriter("./datas/output_mergedatas.xlsx") as writer:

df04.to_excel(writer,index=False)

print("Done!!")

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

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

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

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持随便开发网。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/304178.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

计算机显卡是指什么时候,电脑哪个是显卡

语音内容:大家好,我是时间财富网智能客服时间君,上述问题将由我为大家进行解答。以台式机电脑为例,一般有两种显卡,找到显卡位置的方法:1、集成显卡。集成显卡被集成在CPU或者主板芯片组内部,不…

人民币大写格式转换

在处理财务报表时,单元格格式设置为人民币大写后,-123显示为红色的“壹佰贰拾叁元整”,打印出来后无法区别是正数还是负数;同时有的单位习惯在大写数字前加上“人民币大写:”字样。为了满足不同的人民币大写格式的需要…

生态合作与自主可控

生态合作与自主可控是一个大题目,从不同角度来讨论,不同的人会得出不同的结论。为了交流不空洞,先介绍一个案例,它具有普遍性:L总应该是前年与我们联系过,今年刚刚与我们联系描述了一下他们的现状&#xff…

css规则中区块block,CSS的命名方式:BEM(区块、元素、修饰符)

原标题:CSS的命名方式:BEM(区块、元素、修饰符)本资源由 伯乐在线- 凝枫整理,您也想贡献一份力量?欢迎加入我们 重要概念“Block”区块区块的定义是:一个逻辑和功能兼备的独立页面组件,也可以称为web组件。一个区块包含…

表达式如何获取复选框的值_Nuke表达式 Expression节点讲解

nuke中的表达式节点对于大多数人来说有点神秘,但它非常强大。通常它通过简单的if / else语句修补数据,但在这里我们将从最基本的原则,到一些长期被遗忘的高中数学做一些简单的技巧,最后把它们融合在一起。第一步创建Constant节点&…

卸载重新安装Sql Server 2005出现“性能监视器计数器要求”错误解决方法【转】...

错误原因造成这种错误的原因在于Microsoft SQL Server 安装程序中的安装配置检查器 (SCC)在安装SQL Server前会验证计数器注册表项的值。如果 SCC 无法验证现有的注册表项,或 SCC 无法运行 lodctr.exe 系统程序,则 SCC 检查会失败,致使安装受…

如何在 ASP.NET Core MVC 5 中处理未知的 Action

ASP.NET Core MVC 5 是一个轻量级,开源的,利于单元测试的基于 ASP.NET Core 运行时的 web 框架,在开发时你肯定会遇到不少那些 request 无法匹配 Action 的情况,通常做法是抛出 404,但有些场景下我希望能收口到统一一个…

一文读懂 HMM 模型和 Viterbi 算法

隐含马尔可夫模型(Hidden Markov Model)隐含马尔可夫模型并不是俄罗斯数学家马尔可夫发明的,而是美国数学家鲍姆提出的,隐含马尔可夫模型的训练方法(鲍姆-韦尔奇算法)也是以他名字命名的。隐含马尔可夫模型…

qtabwidget设置tab高度_VC|富文本编辑框CRichEditCtrl的字体与段落设置

将富文本编辑框设置为2.0,关联一个control变量m_textblock:1 字体设置富文本编辑框关于字体设置的成员函数:BOOL CRichEditCtrl::SetSelectionCharFormat( CHARFORMAT& cf );此成员函数用来设置这个CRichEditCtrl对象中的当前选择的文本的…

css伪类元素加在元素前,CSS伪类:before在元素之前 :after 在元素之后实例讲解

本教程简单的介绍一下关于CSS伪类:before, :after详解,有需要了解的朋友可以参考一下下。:before 伪元素在元素之前添加内容这个伪元素允许创作人员在元素内容的最前面插入生成内容。默认地,这个伪元素是行内元素,不过可以使用属性 display 改…

云计算的关键特点及挑战

本文节选自《云计算:实现、管理与安全》导言 云计算的关键特点 一个云计算环境有几个关键特点。服务经常提供给特定 的看到因他们的资本支出最小化而获益的消费者和小企业。 这有助于降低在市场进入门槛,因为用来提供这些产品的基础设施由云服务提供商拥…

Mock 框架 Moq 的使用

Mock 框架 Moq 的使用IntroMoq 是 .NET 中一个很流行的 Mock 框架,使用 Mock 框架我们可以只针对我们关注的代码进行测试,对于依赖项使用 Mock 对象配置预期的依赖服务的行为。Moq 是基于 Castle 的动态代理来实现的,基于动态代理技术动态生成…

凝思系统改时间_国产操作系统往事:四十年激变,终再起风云

在这一轮技术浪潮中,无论是底层的开发生态,算力的硬件基础,还是五花八门的商业化落地场景,中国企业都有着毋庸置疑的话语输出能力。而另一个全民皆知、中国ICT产业的长期阵痛——国产操作系统,也在2019世界人工智能大会…

程序员必知的 Python 陷阱与缺陷列表

我个人对陷阱的定义是这样的:代码看起来可以工作,但不是以你“想当然“”的方式。如果一段代码直接出错,抛出了异常,我不认为这是陷阱。比如,Python程序员应该都遇到过的“UnboundLocalError”, 示例:>&…

楚乔传手游 服务器维护,楚乔传手游网络异常进不去游戏怎么办?楚乔传网络异常解决方法...

随着楚乔传的大热,手游楚乔传也应运而生,上线后的楚乔传手游版虽然好玩但也出现了许多的BUG和问题,最近有小伙伴说楚乔传手游下载后,打不开一直显示网络异常,但是网都好的,那么楚乔传手游网络异常怎么办?楚…

说说富士康跳楼事件

发生这么多连续悲剧的原因个人认为,除了富士康管理以及员工群体的问题以外,更大的责任还在于媒体的铺天盖地宣传,导致了极强的示范效应。为什么富士康已经存在那么久,之前没有那么多跳楼的,反倒是宣传以后越来越多呢&a…

聊一聊和Nacos 2.0.0对接那些事

前言 nacos 2.0.0 已经发布了 alpha1, alpha2 和 beta 三个版本了,部分测试报告也已经出来了。Nacos2.0.0-ALPHA2 服务发现性能测试报告Nacos 2.0.0-ALPHA2 配置性能测试报告还是比较值得期待的。前段时间也一直在完善 nacos-sdk-csharp 这个项目。主要就是对接 Nac…

网页访问samba服务器,(smbclient) - 交互方式访问samba服务器

smbclient交互方式访问samba服务器补充说明smbclient命令 属于samba套件,它提供一种命令行使用交互式方式访问samba服务器的共享资源。语法smbclient(选项)(参数)选项-B:传送广播数据包时所用的IP地址;-d:指定记录文件所记载事件的…

家用简单电线路图_家庭配电箱接线图解 家用配电箱安装方法

家居装修对水电的关注不可或缺,家庭电路的铺设更是至关重要的环节,其中家庭配电箱安装涉及到家居用电的安全问题。因此,小编特地对家庭配电箱安装的知识,以及家庭配电箱接线图作出相关整理,帮助大家对家庭配电箱有一个…

决策树算法及实现

在计算机科学中,树是一种很重要的数据结构,比如我们最为熟悉的二叉查找树(Binary Search Tree),红黑树(Red-Black Tree)等,通过引入树这种数据结构,我们可以很快地缩小问…