python中的merge函数_Python Merge函数原理及用法解析[通俗易懂]

python中的merge函数_Python Merge函数原理及用法解析[通俗易懂]Merge函数的用法jfz免费资源网简单来说Merge函数相当于Excel中的vlookup函数。当我们对2个表进行数据合并的时候需要通过指定两个表中相同的列作为key,然后通过key匹配到其中要合并在一起的values值。jfz免费资源网然后对于merge函数在Pandas中分为1vs1,多(m)vs1,以及多(m)vs多(m)这三种场景。但是平时用的最多的往往是多vs1的这种场景。也就是说2…

大家好,又见面了,我是你们的朋友全栈君。

Merge函数的用法jfz免费资源网

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

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

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

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

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

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

python中的merge函数_Python Merge函数原理及用法解析[通俗易懂]jfz免费资源网

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

python中的merge函数_Python Merge函数原理及用法解析[通俗易懂]jfz免费资源网

代码演示:jfz免费资源网

1. 读取表1,表2中的内容,作为DataFrame赋值给变量jfz免费资源网

#%%

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为主表进行合并。jfz免费资源网

#%%

#ホスト名作为key来匹配两个表,相当于vlookup函数

#how=left代表以left左表为主,这里则代表表二为左表

df03 = pd.merge(df02,df01,on=”ホスト名”,how=”left”)

df03

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

python中的merge函数_Python Merge函数原理及用法解析[通俗易懂]jfz免费资源网

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

#%%

#因为表中有相同的列名因此自动后缀被加上了_y

#下面代表筛选查询范围,以及指定查询值

df03 = df03.loc[:,[“ホスト名”,”行番号”,”ソフトウェア区分_y”,”ソフトウェア名_y”,”ソフトウェアバージョン_y”,”ソフトウェア製造元_y”]]

df04 = df03[(df03[“ソフトウェア名_y”]==”Trend Micro”) | (df03[“ソフトウェア製造元_y”]==”Symantec”)]

#重新把列名设定换一下然后输出

df04.columns = [“ホスト名”,”行番号”,”ソフトウェア区分”,”ソフトウェア名”,”ソフトウェアバージョン”,”ソフトウェア製造元”]

df04

结果:jfz免费资源网

python中的merge函数_Python Merge函数原理及用法解析[通俗易懂]jfz免费资源网

4. 将数据导出到Excel文件jfz免费资源网

#%%

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

df04.to_excel(writer,index=False)

print(“Done!!”)

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

python中的merge函数_Python Merge函数原理及用法解析[通俗易懂]jfz免费资源网

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

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

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/136301.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 线性代数 — 矩阵求逆的4种方法

    线性代数 — 矩阵求逆的4种方法矩阵求逆的 4 种方法

    2025年8月15日
    0
  • 面试官:请你谈谈Java的类加载过程[通俗易懂]

    面试官:请你谈谈Java的类加载过程[通俗易懂]刚刚走出校门的应届毕业生,如果在去寻求一份Java开发的工作时,你的面试官很有可能一边看着你的简历,一边漫不经心地问你:了解过Java类的加载过程吗?这个时候你一定要注意了,虽然这是一个老生常谈的问题,但是这也是一个非常能够考验你Java功底的问题。如果你答好了,这是你应该的;如果你没答好,那么对不起,面试官心中已经给了你不及格。今天,小编就Java类加载过程这个问题,抛砖引玉,说一下…

    2022年8月11日
    6
  • 以太网Flow Control相关

    以太网Flow Control相关pausepkt,MAC0为self-station,MAC1为link-partnerstationflow如下step1~2:MAC1向MAC0TXpkt,MAC0RX到pkt后送给后续moduleA处理。step3:MAC0来不及处理源源不断的MAC1送来的pkt,此时拉低FC_rdy(一般有RXctrl相关module起)(flowcontrolready)信号,表明此时需要进行flowcontrol;step4:MAC0TX端看到FC_rd.

    2022年6月5日
    44
  • __setattr__,setattr(),getattr__,getattr()及__getattribute__的区别

    __setattr__,setattr(),getattr__,getattr()及__getattribute__的区别Python2.7IDEPycharm5.0.3首先,给一波定义__setattr__(self,name,value)#当试图给特性name赋值时候自动被调用,其余方法同理#相当于触发机制__getattribute__(self,item)#每次通过实例化访问属性都会通过该函数#如果没有该属性,则访问完该函数后,再会通过__getattr__函数_setattr_和_get

    2025年6月23日
    3
  • 再来利用java学学javaweb——–html+css+ JavaScript[通俗易懂]

    再来利用java学学javaweb——–html+css+ JavaScript[通俗易懂]今日内容1.web概念概述2.HTMLweb概念概述*JavaWeb: *使用Java语言开发基于互联网的项目*软件架构: 1.C/S:Client/Server客户端/服务器端 *在用户本地有一个客户端程序,在远程有一个服务器端程序 *如:QQ,迅雷… *优点: 1.用户体验好 *缺点: 1.开发、安装,部署,维护麻烦 2.B/S:Browser/Server浏览器/服务器端 *只需要一个浏览器,用户通过不同的网

    2022年7月12日
    14
  • mysql之repair table 修复表札记

    mysql之repair table 修复表札记

    2021年9月18日
    60

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号