专栏首页悠扬前奏的博客Pandas-19.合并/连接

Pandas-19.合并/连接

Pandas-19.合并/连接

merge()函数可以让DataFrame对象具有标准数据库操作:

pd.merge(left, right, how='inner', on=None, left_on=None, right_on=None,
left_index=False, right_index=False, sort=True)

参数解释:

  • left - 一个DataFrame对象。
  • right - 另一个DataFrame对象。
  • on - 列(名称)连接,必须在左和右DataFrame对象中存在(找到)。
  • left_on - 左侧DataFrame中的列用作键,可以是列名或长度等于DataFrame长度的数组。
  • right_on - 来自右的DataFrame的列作为键,可以是列名或长度等于DataFrame长度的数组。
  • left_index - 如果为True,则使用左侧DataFrame中的索引(行标签)作为其连接键。 在具有MultiIndex(分层)的DataFrame的情况下,级别的数量必须与来自右DataFrame的连接键的数量相匹配。
  • right_index - 与右DataFrame的left_index具有相同的用法。
  • how - 它是left, right, outer以及inner之中的一个,默认为内inner。 下面将介绍每种方法的用法。
  • sort - 按照字典顺序通过连接键对结果DataFrame进行排序。默认为True,设置为False时,在很多情况下大大提高性能。

以如下代码作为例子

import pandas as pd
left = pd.DataFrame({
         'id':[1,2,3,4,5],
         'Name': ['Alex', 'Amy', 'Allen', 'Alice', 'Ayoung'],
         'subject_id':['sub1','sub2','sub4','sub6','sub5']})
right = pd.DataFrame(
         {'id':[1,2,3,4,5],
         'Name': ['Billy', 'Brian', 'Bran', 'Bryce', 'Betty'],
         'subject_id':['sub2','sub4','sub3','sub6','sub5']})
print(left)
print("---------")
print(right)
'''
   id    Name subject_id
0   1    Alex       sub1
1   2     Amy       sub2
2   3   Allen       sub4
3   4   Alice       sub6
4   5  Ayoung       sub5
---------
   id   Name subject_id
0   1  Billy       sub2
1   2  Brian       sub4
2   3   Bran       sub3
3   4  Bryce       sub6
4   5  Betty       sub5
'''

一个键合并两个DataFrame

print(pd.merge(left,right,on="id"))
'''
   id  Name_x subject_id_x Name_y subject_id_y
0   1    Alex         sub1  Billy         sub2
1   2     Amy         sub2  Brian         sub4
2   3   Allen         sub4   Bran         sub3
3   4   Alice         sub6  Bryce         sub6
4   5  Ayoung         sub5  Betty         sub5
'''

两个键合并

print(pd.merge(left,right,on=["id", "subject_id"]))
'''
   id  Name_x subject_id Name_y
0   4   Alice       sub6  Bryce
1   5  Ayoung       sub5  Betty
'''

连接

使用how参数,指定连接方式,如果组合键没有出现在左侧或者右侧表中,连接表值为NA:

合并方法

SQL等效

描述

left

LEFT OUTER JOIN

使用左侧对象的键

right

RIGHT OUTER JOIN

使用右侧对象的键

outer

FULL OUTER JOIN

使用键的联合

inner

INNER JOIN

使用键的交集

left join:

print(pd.merge(left,right,on=["subject_id"],how="left"))
'''
   id_x  Name_x subject_id  id_y Name_y
0     1    Alex       sub1   NaN    NaN
1     2     Amy       sub2   1.0  Billy
2     3   Allen       sub4   2.0  Brian
3     4   Alice       sub6   4.0  Bryce
4     5  Ayoung       sub5   5.0  Betty
'''

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • JVM-9.Class类文件结构

    字段表结构 -access_flag是字段修饰符,取值如下:

    悠扬前奏
  • Pandas-20.级联

    concat函数可以将Series,DataFrame和Panel对象之间相互组合在一起

    悠扬前奏
  • LintCode-5.第k大元素

    给出数组 [1,2,3,4,5],第一大的元素是 5,第二大的元素是 4,第三大的元素是 3,以此类推

    悠扬前奏
  • LintCode 数组剔除元素后的乘积题目代码

    定义B[i] = A[0] * ... * A[i-1] * A[i+1] * ... * A[n-1], 计算B的时候请不要使用除法。

    desperate633
  • 【DB笔试面试731】在Oracle中,RAC在修改IP地址时有哪些注意事项?

    1.如果底层网络配置已经更改,但是oifcfg尚未执行同样的变更,则重启oracle集群会导致crsd进程不能启动。

    小麦苗DBA宝典
  • HTML+JS实现简单贪吃蛇游戏

    因为js是单线程的,所以有js写贪吃蛇可以少考虑很多东西,感觉非常方便。今天给大家介绍一个非常简单的贪吃蛇写法。我说的非常简单勒,就是指没有游戏结束,也不会变长...

    ZackSock
  • 比特币与130多种山寨币的数字货币开源交易库CCXT(CryptoCurrency eXchange)

    CCXT(CryptoCurrency eXchange)交易库,一个JavaScript/Python/PHP加密货币交易库,支持超过100种山寨币与比特币交...

    笔阁
  • 最好的java应用性能分析工具?

    摘要:性能诊断是软件工程师在日常工作中需要经常面对和解决的问题,在用户体验至上的今天,解决好应用的性能问题能带来非常大的收益。Java 作为最流行的编程语言之一...

    冯杰宁
  • 你真的会高效的在GitHub上搜索开源项目吗?

    GitHub的流行, GitHub在开源世界的受欢迎程度自不必多言。再加上今天,GitHub官方又搞了个大新闻:私有仓库也改为免费使用,这在原来可是需要真金白银...

    程序猿DD
  • 杨超越、迪丽热巴变身徐锦江,网友惊叹:对此毫无抵抗力丨AI换脸术

    在AI换脸技术的加持下,B站up主嗨喽KT丶就把《燃烧我的卡路里》MV中的火箭少女101组合成员都换上了徐锦江的脸。

    量子位

扫码关注云+社区

领取腾讯云代金券