Python Merge函数原理及用法解析

 更新时间:2020年09月16日 14:23:05   作者:秋天中的一片叶  
这篇文章主要介绍了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会更加的灵活也更加的强大。

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

相关文章

  • Python matplotlib.pyplot.hist()绘制直方图的方法实例

    Python matplotlib.pyplot.hist()绘制直方图的方法实例

    直方图(Histogram)又称质量分布图,是一种统计报告图,由一系列高度不等的纵向条纹或线段表示数据分布的情况,一般用横轴表示数据类型,纵轴表示分布情况,下面这篇文章主要给大家介绍了关于Python matplotlib.pyplot.hist()绘制直方图的相关资料,需要的朋友可以参考下
    2022-06-06
  • python中的print()函数end=' '的使用及说明

    python中的print()函数end=' '的使用及说明

    这篇文章主要介绍了python中的print()函数end=' '的使用及说明,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-02-02
  • pyecharts在数据可视化中的应用详解

    pyecharts在数据可视化中的应用详解

    这篇文章主要介绍了pyecharts在数据可视化中的应用详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-06-06
  • python软件测试Jmeter性能测试JDBC Request(结合数据库)的使用详解

    python软件测试Jmeter性能测试JDBC Request(结合数据库)的使用详解

    这篇文章主要介绍了python软件测试Jmeter性能测试JDBC Request(结合数据库)的使用详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-01-01
  • Python通过队列来实现进程间通信的示例

    Python通过队列来实现进程间通信的示例

    这篇文章主要介绍了Python通过队列来实现进程间通信的示例,帮助大家更好的理解和使用python,感兴趣的朋友可以了解下
    2020-10-10
  • 基于python实现自动化办公学习笔记(CSV、word、Excel、PPT)

    基于python实现自动化办公学习笔记(CSV、word、Excel、PPT)

    这篇文章主要介绍了基于python实现自动化办公学习笔记,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-08-08
  • Python使用Gzip解压的示例详解

    Python使用Gzip解压的示例详解

    Python 中构建了许多用于压缩和解压缩目的的库,本文为大家介绍的Gzip库就是一种流行的数据压缩工具,下面我们就来看看如何使用 gzip 解压缩来解压缩压缩内容吧
    2023-11-11
  • Python3模拟curl发送post请求操作示例

    Python3模拟curl发送post请求操作示例

    这篇文章主要介绍了Python3模拟curl发送post请求操作,结合实例形式分析了Python3使用Request请求模拟curl发送post相关操作技巧,需要的朋友可以参考下
    2019-05-05
  • python如何利用paramiko执行服务器命令

    python如何利用paramiko执行服务器命令

    这篇文章主要介绍了python如何利用paramiko执行服务器命令,帮助大家更好的理解和使用python,感兴趣的朋友可以了解下
    2020-11-11
  • Python中非常实用的一些功能和函数分享

    Python中非常实用的一些功能和函数分享

    这篇文章主要介绍了Python中非常实用的一些功能和函数分享,本文讲解了带任意数量参数的函数、使用Glob()查找文件、调试、生成唯一ID等内容,需要的朋友可以参考下
    2015-02-02

最新评论