快捷搜索:  汽车  科技

pandas处理字符合并:pandas的数据合并功能及merge函数介绍

pandas处理字符合并:pandas的数据合并功能及merge函数介绍在这个例子中我们使用的是默认的内联接,即how为inner。用于合并的数据,df1和df2中他们的“分行名称”字段,也是能一一对应上了。这保证了我们的数据在合并后仍然是3行数据。但是有的时候,我们要合并的数据并不能一一对应,这时如果我们还要把所有的行都展示出来,就需要使用外联接,即outer。下面我们通过一个程序演示一下外联接的效果。程序是通过第28行实现了此功能。left和right分别赋值为df1和df2,on参数指定的是“分行名称”,这代表的是通过“分行名称”,我们将对应的数据进行联接。“分行名称”就相当于SQL语句进行内联接时,where条件上用于联接的字段。关于完整的参数含义,大家可以参考pandas的API参考手册,由于本文并不涉及,受到文章篇幅的限制,我们就不一一介绍了。下面我们先通过一个简单的小程序,演示一下merge的基本用法。程序的源代码如下:我们假定有两组数据分别为d

pandas为我们提供了merge函数,它提供了类似于SQL中内联接,外联接的数据合并效果。我们看一下merge函数的声明:

pandas处理字符合并:pandas的数据合并功能及merge函数介绍(1)

left和right参数为要进行合并的两个DataFrame

how参数默认是inner,代表是内联接,其它的参数值left right outer分别代表左联接,右联接和外联接

on参数相当于我们在使用SQL时,where条件里用于联接的字段

关于完整的参数含义,大家可以参考pandas的API参考手册,由于本文并不涉及,受到文章篇幅的限制,我们就不一一介绍了。

下面我们先通过一个简单的小程序,演示一下merge的基本用法。程序的源代码如下:

pandas处理字符合并:pandas的数据合并功能及merge函数介绍(2)

我们假定有两组数据分别为df1和df2,他们代表“哈尔滨分行”,“天津分行”,“大连分行”3家分行的数据,数据的内容为“发放金额”,“贷款余额”和“逾期余额”。现在我们有一个需求是把这3家分行的数据合并到一个报表上。

pandas处理字符合并:pandas的数据合并功能及merge函数介绍(3)

程序是通过第28行实现了此功能。left和right分别赋值为df1和df2,on参数指定的是“分行名称”,这代表的是通过“分行名称”,我们将对应的数据进行联接。“分行名称”就相当于SQL语句进行内联接时,where条件上用于联接的字段。

pandas处理字符合并:pandas的数据合并功能及merge函数介绍(4)

在这个例子中我们使用的是默认的内联接,即how为inner。用于合并的数据,df1和df2中他们的“分行名称”字段,也是能一一对应上了。这保证了我们的数据在合并后仍然是3行数据。但是有的时候,我们要合并的数据并不能一一对应,这时如果我们还要把所有的行都展示出来,就需要使用外联接,即outer。下面我们通过一个程序演示一下外联接的效果。

pandas处理字符合并:pandas的数据合并功能及merge函数介绍(5)

在上面的程序中,我们设计了2个DataFrame,它们的“分行名称”不是一一对应的。大家可以注意一下第1个DataFrame中的“重庆分行”、第2个DataFrame中的“成都分行”,都是对方数据中没有的行。

pandas处理字符合并:pandas的数据合并功能及merge函数介绍(6)

这样的两个DataFrame,如果要进行内联接的话,而只会保留拥有相同字段的行。程序的第30行,默认进行了内联系,程序的执行效果如下图所示。

pandas处理字符合并:pandas的数据合并功能及merge函数介绍(7)

如果我们想把无法对应上的“重庆分行”和“成都分行”也合并到一起,这时我们就需要指定how参数为outer,即程序第34行所示。这也就相当于SQL中的外连接。程序的执行效果如下所示。

pandas处理字符合并:pandas的数据合并功能及merge函数介绍(8)

由于“重庆分行”没有对应的“逾期余额”列,而“成都分行”没有对应的“发放金额”和“贷款余额”列,所以在合并后,这些字段的内容就为NaN,即代表空值。如果我们用to_excel导出到excel文件的话,对应的单元格将什么内容也没有。如果我们不希望空值里什么都不展示,而是把空值设置为0,那么我们可以通过fillna函数处理一下。例如程序第38行。下图为处理后的效果,整个报表的数据如果为空就都填充为0了。

pandas处理字符合并:pandas的数据合并功能及merge函数介绍(9)

在实际工作中,我们用于联接的字段有可能不止一个,merge函数也支持多个字段联接。下面我们通过一个实例演示一下如何处理多字段联接的场景。

pandas处理字符合并:pandas的数据合并功能及merge函数介绍(10)

现在我们在原有DataFrame的基础上,增加一个“客户类型”字段,即法人或者个人。

pandas处理字符合并:pandas的数据合并功能及merge函数介绍(11)

当我们要联接这个数据时,我们的on参数应该传递一个列表(list)。通过list,将多个字段传入merge函数。

pandas处理字符合并:pandas的数据合并功能及merge函数介绍(12)

上面就是联接后的效果,我们通过“分行名称”和“客户类型”找到对应的行,并将两个DataFrame进行了合并。以上就是关于merge的一些常用用法,希望对大家的工作能有所帮助。

开发环境:Windows 7 Python 2.7.17 PyCharm Community Edition 2016.1.5

如果大家认为我的文章还可以,真心希望能帮我点一个“关注”,粉丝的数量真的对我很重要,也算是对我努力结果的一个支持,谢谢大家了。

猜您喜欢: