merge函数_Python数据处理:merge让数据连接与合并更高效「附源码」

f52c0557d960295de4225f64df41badd.png

前言:

Pandas 的基本特性之一就是高性能的内存式数据连接(join)与合并(merge)操作。pd.merge() 函数实现了三种数据连接的类型:一对一、多对一和多对多。这三种数据连接 类型都通过 pd.merge() 接口进行调用,根据不同的数据连接需求进行不同的操作。

一、数据连接的类型

1.一对一连接

一对一连接是最简单的数据合并类型。

df1= pd.DataFrame({'员工': ['Bob', 'Jake', 'Lisa', 'Sue'], '组': ['Accounting', 'Engineering', 'Engineering', 'HR']})df2= pd.DataFrame({'员工': ['Lisa', 'Bob', 'Jake', 'Sue'], '入职': [2004, 2008, 2012, 2014]})

上次讲解了怎么用concat函数合并成一个DataFrame,下面使用pd.merge函数实现。

df3= pd.merge(df1, df2)df3

​代码结果:

b784f6858c3381b5835e8b26e50844e7.png

pd.merge() 方法会发现两个 DataFrame 都有“员工”这一列,并会自动以这列作为键进行连接。两个输入的合并结果是一个新的 DataFrame。需要注意的是共同列的位置可以是不一致的。

2. 多对一连接

多对一连接是指,在需要连接的两个列中,有一列的值有重复。通过多对一连接获得的结果 DataFrame 将会保留重复值。

df4= pd.DataFrame({'组': ['Accounting', 'Engineering', 'HR'], '管理组': ['Carly', 'Guido', 'Steve']})pd.merge(df1,df4)

​​代码结果:

46ebf7d2715d192c1af76ffcf40c1e8a.png

在结果 DataFrame 中多了一个“管理组”列,里面有些值会因为输入数据的对应关系而有所重复。

3. 多对多连接

多对多连接是个有点儿复杂的概念,如果左右两个输入的共同列都包含重复值,那么合并的结果就是一种多对多连接。

df5= pd.DataFrame({'组': ['Accounting', 'Accounting', 'Engineering', 'Engineering', 'HR', 'HR'], '技能': ['math', 'spreadsheets', 'coding', 'linux', 'spreadsheets', 'organization']})pd.merge(df1, df5)

​​代码结果:

d9b6c7d757cf51e7a163dc8518c5764b.png

这三种数据连接类型可以直接与其他 Pandas 工具组合使用,从而实现各种各样的功能。但是工作中的真实数据集往往并不像示例中演示的那么干净、整洁。

二、设置数据合并的键

1.参数on的用法

最简单的方法就是直接将参数 on 设置为一个列名字符串或者一个包含多列名称的列表。

pd.merge(df1, df2, on='员工')

​代码结果:​

2db6fa7facee1add5a689df2944cbc78.png

这个参数只能在两个 DataFrame 有共同列名的时候才可以使用。

2.left_on与right_on参数

有时候要合并两个列名不同的数据集,就可以用 left_on 和 right_on 参数来指定列名。

df7= pd.DataFrame({'名字': ['Bob', 'Jake', 'Lisa', 'Sue'], '薪水': [70000, 80000, 120000, 90000]})pd.merge(df1, df7, left_on="员工
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值