Pandas 连接合并函数merge()详解

一、merge函数用途

pandas中的merge()函数类似于SQL中join的用法,可以将不同数据集依照某些字段(属性)进行合并操作,得到一个新的数据集。

二、merge()函数的具体参数

用法:

DataFrame1.merge(DataFrame2, how=‘inner', on=None, left_on=None, right_on=None, left_index=False, right_index=False, sort=False, suffixes=('_x', ‘_y'))

参数说明

参数 说明
how 默认为inner,可设为inner/outer/left/right
on 根据某个字段进行连接,必须存在于两个DateFrame中(若未同时存在,则需要分别使用left_on和right_on来设置)
left_on 左连接,以DataFrame1中用作连接键的列
right_on 右连接,以DataFrame2中用作连接键的列
left_index 将DataFrame1行索引用作连接键
right_index 将DataFrame2行索引用作连接键
sort 根据连接键对合并后的数据进行排列,默认为True
suffixes 对两个数据集中出现的重复列,新数据集中加上后缀_x,_y进行区别

三、merge用法举例

创建两个数据框

#利用字典dict创建数据框
dataDf1=pd.DataFrame({'lkey':['foo','bar','baz','foo'],
      'value':[1,2,3,4]})
dataDf2=pd.DataFrame({'rkey':['foo','bar','qux','bar'],
      'value':[5,6,7,8]})
print(dataDf1)
print(dataDf2)
>>>
 lkey value
0 foo  1
1 bar  2
2 baz  3
3 foo  4

 rkey value
0 foo  5
1 bar  6
2 qux  7
3 bar  8

内连接(Inner)

#inner链接
dataLfDf=dataDf1.merge(dataDf2, left_on='lkey',right_on='rkey')
>>>
 lkey value_x rkey value_y
0 foo  1 foo  5
1 foo  4 foo  5
2 bar  2 bar  6
3 bar  2 bar  8

右链接(Right)

#Right链接
dataDf1.merge(dataDf2, left_on='lkey', right_on='rkey',how='right')
>>>
 lkey value_x rkey value_y
0 foo  1.0 foo  5
1 foo  4.0 foo  5
2 bar  2.0 bar  6
3 bar  2.0 bar  8
4 NaN  NaN qux  7

全链接(Outer)

#Outer链接
dataDf1.merge(dataDf2, left_on='lkey', right_on='rkey', how='outer')
>>>
 lkey value_x rkey value_y
0 foo  1.0 foo  5.0
1 foo  4.0 foo  5.0
2 bar  2.0 bar  6.0
3 bar  2.0 bar  8.0
4 baz  3.0 NaN  NaN
5 NaN  NaN qux  7.0

以上为个人经验,希望能给大家一个参考,也希望大家多多支持我们。如有错误或未考虑完全的地方,望不吝赐教。

(0)

相关推荐

  • 详解PANDAS 数据合并与重塑(join/merge篇)

    在上一篇文章中,我整理了pandas在数据合并和重塑中常用到的concat方法的使用说明.在这里,将接着介绍pandas中也常常用到的join 和merge方法 merge pandas的merge方法提供了一种类似于SQL的内存链接操作,官网文档提到它的性能会比其他开源语言的数据操作(例如R)要高效. 和SQL语句的对比可以看这里 merge的参数 on:列名,join用来对齐的那一列的名字,用到这个参数的时候一定要保证左表和右表用来对齐的那一列都有相同的列名. left_on:左表对齐的列,

  • Pandas 合并多个Dataframe(merge,concat)的方法

    在数据处理的时候,尤其在搞大数据竞赛的时候经常会遇到一个问题就是,多个表单的合并问题,比如一个表单有user_id和age这两个字段,另一个表单有user_id和sex这两个字段,要把这两个表合并成只有user_id.age.sex三个字段的表怎么办的,普通的拼接是做不到的,因为user_id每一行之间不是对应的,像拼积木似的横向拼接肯定是不行的. pandas中有个merge函数可以做到这个实用的功能,merge这个词会点SQL语言的应该都不陌生. 下面说说merge函数怎么用: df = p

  • pandas dataframe的合并实现(append, merge, concat)

    创建2个DataFrame: >>> df1 = pd.DataFrame(np.ones((4, 4))*1, columns=list('DCBA'), index=list('4321')) >>> df2 = pd.DataFrame(np.ones((4, 4))*2, columns=list('FEDC'), index=list('6543')) >>> df3 = pd.DataFrame(np.ones((4, 4))*3, col

  • 在Pandas中DataFrame数据合并,连接(concat,merge,join)的实例

    最近在工作中,遇到了数据合并.连接的问题,故整理如下,供需要者参考~ 一.concat:沿着一条轴,将多个对象堆叠到一起 concat方法相当于数据库中的全连接(union all),它不仅可以指定连接的方式(outer join或inner join)还可以指定按照某个轴进行连接.与数据库不同的是,它不会去重,但是可以使用drop_duplicates方法达到去重的效果. concat(objs, axis=0, join='outer', join_axes=None, ignore_ind

  • Pandas 连接合并函数merge()详解

    一.merge函数用途 pandas中的merge()函数类似于SQL中join的用法,可以将不同数据集依照某些字段(属性)进行合并操作,得到一个新的数据集. 二.merge()函数的具体参数 用法: DataFrame1.merge(DataFrame2, how='inner', on=None, left_on=None, right_on=None, left_index=False, right_index=False, sort=False, suffixes=('_x', '_y'

  • python pandas.DataFrame.loc函数使用详解

    官方函数 DataFrame.loc Access a group of rows and columns by label(s) or a boolean array. .loc[] is primarily label based, but may also be used with a boolean array. # 可以使用label值,但是也可以使用布尔值 Allowed inputs are: # 可以接受单个的label,多个label的列表,多个label的切片 A singl

  • Python Pandas中合并数据的5个函数使用详解

    目录 join 索引一致 索引不一致 merge concat 纵向拼接 横向拼接 append combine 前几天在一个群里面,看到一位朋友,说到自己的阿里面试,被问了一些关于pandas的使用.其中一个问题是:pandas中合并数据的5中方法. 今天借着这个机会,就为大家盘点一下pandas中合并数据的5个函数.但是对于每个函数,我这里不打算详细说明,具体用法大家可以参考pandas官当文档. join主要用于基于索引的横向合并拼接: merge主要用于基于指定列的横向合并拼接: con

  • Python Pandas数据合并pd.merge用法详解

    目录 前言 语法 参数 1.连接键 2.索引连接 3.多连接键 4.连接方法 5.连接指示 总结 前言 实现类似SQL的join操作,通过pd.merge()方法可以自由灵活地操作各种逻辑的数据连接.合并等操作 可以将两个DataFrame或Series合并,最终返回一个合并后的DataFrame 语法 pd.merge(left, right, how = 'inner', on = None, left_on = None, right_on = None, left_index = Fal

  • Pandas实现两个表的连接功能的方法详解

    目录 准备数据 先导入模块 输出内容 连接 内连接 外连接 左连接 右连接 上次介绍了pandas的多条件筛选,这些都是一些数据处理的必要技能,也不贪多,咱们每次学习一点. 这次咱们说说pandas的两个表的连接技能merge,也就是根据一个表的条件去匹配另一个表的内容. 话不多说,直接正文. 准备数据 先导入模块 import pandas as pd df1 = pd.DataFrame({     '姓名': ['张三', '李四', '王五', '刘六', '齐四'],     '号码'

  • pandas dataframe 中的explode函数用法详解

    在使用 pandas 进行数据分析的过程中,我们常常会遇到将一行数据展开成多行的需求,多么希望能有一个类似于 hive sql 中的 explode 函数. 这个函数如下: Code # !/usr/bin/env python # -*- coding:utf-8 -*- # create on 18/4/13 import pandas as pd def dataframe_explode(dataframe, fieldname): temp_fieldname = fieldname

  • 对numpy和pandas中数组的合并和拆分详解

    合并 numpy中 numpy中可以通过concatenate,指定参数axis=0 或者 axis=1,在纵轴和横轴上合并两个数组. import numpy as np import pandas as pd arr1=np.ones((3,5)) arr1 Out[5]: array([[ 1., 1., 1., 1., 1.], [ 1., 1., 1., 1., 1.], [ 1., 1., 1., 1., 1.]]) arr2=np.random.randn(15).reshape(

  • 对DataFrame数据中的重复行,利用groupby累加合并的方法详解

    pandas读取一组数据,可能存在重复索引,虽然可以利用drop_duplicate直接删除,但是会删除重要信息. 比如同一ID用户,多次登录学习时间.要计算该用户总共''学习时间'',就要把重复的ID的''学习时间''累加. 可以结合groupby和sum函数完成该操作. 实例如下: 新建一个DataFrame,计算每个 id 的总共学习时间.其中 id 为one/two的存在重复学习时间.先利用 groupby 按照键 id 分组,然后利用sum()函数求和,即可得到每个id的总共学习时间.

  • Pandas中GroupBy具体用法详解

    目录 简介 分割数据 多index get_group dropna groups属性 index的层级 group的遍历 聚合操作 通用聚合方法 同时使用多个聚合方法 NamedAgg 不同的列指定不同的聚合方法 转换操作 过滤操作 Apply操作 简介 pandas中的DF数据类型可以像数据库表格一样进行groupby操作.通常来说groupby操作可以分为三部分:分割数据,应用变换和和合并数据. 本文将会详细讲解Pandas中的groupby操作. 分割数据 分割数据的目的是将DF分割成为

  • Python必备技巧之Pandas数据合并函数

    目录 1. concat 2. append 3. merge 4. join 5. combine 总结 1. concat concat是pandas中专门用于数据连接合并的函数,功能非常强大,支持纵向合并和横向合并,默认情况下是纵向合并,具体可以通过参数进行设置. pd.concat( objs: 'Iterable[NDFrame] | Mapping[Hashable, NDFrame]', axis=0, join='outer', ignore_index: 'bool' = Fa

随机推荐