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 = False, right_index = False, sort = True, suffixes = (‘_x','_y'),
         copy = True, indicator = False, validate = None)

参数

left、right:需要连接的两个DataFrame或Series,一左一右

how:两个数据连接方式,默认为inner,可设置inner、outer、left或right

on:作为连接键的字段,左右数据中都必须存在,否则需要用left_on和right_on来指定

left_on:左表的连接键字段

right_on:右表的连接键字段

left_index:为True时将左表的索引作为连接键,默认为False

right_index:为True时将右表的索引作为连接键,默认为False

suffixes:如果左右数据出现重复列,新数据表头会用此后缀进行区分,默认为_x和_y

1.连接键

在数据连接时,如果没有指定根据哪一列(连接键)进行连接,Pandas会自动找到相同列名的列进行连接,并按左边数据的顺序取交集数据。为了代码的可阅读性和严谨性,推荐通过on参数指定连接键

import pandas as pd
df1 = pd.DataFrame({'a':[1,2],'b':[5,6]})
df2 = pd.DataFrame({'a':[2,1,0],'y':[6,7,8]})
# 按a列进行连接,数据顺序取df1的顺序
res = pd.merge(df1, df2, on='a')

结果展示

df1

df2

res

2.索引连接

可以直接按索引进行连接,将left_index和right_index设置为True,会以两个表的索引作为连接键

import pandas as pd
df1 = pd.DataFrame({'a':[1,2],'b':[5,6]})
df2 = pd.DataFrame({'a':[2,1,0],'y':[6,7,8]})
# 两个表都有同名的a列,用suffixes参数设置后缀来区分
res = pd.merge(df1, df2, left_index=True, right_index=True, suffixes=('_1','_2'))

结果展示

df1

df2

res

3.多连接键

如果在合并数据时需要用多个连接键,可以以列表的形式将这些连接键传入on中

import pandas as pd
df3 = pd.DataFrame({'a':[1,2],'b':[3,4],'x':[5,6]})
df4 = pd.DataFrame({'a':[1,2,3],'b':[3,4,5],'y':[6,7,8]})
# a和b列中的(1,3)和(2,4)作为连接键将两个数据进行了连接
res = pd.merge(df3, df4, on=['a','b'])

结果展示

df3

df4

res

4.连接方法

how参数可以指定数据用哪种方法进行合并,可以设置inner、outer、left或right

默认的方式是inner join,取交集,也就是保留左右表的共同内容;如果是left join,左边表中所有的内容都会保留;如果是right join,右表全部保留;如果是outer join,则左右表全部保留。关联不上的内容为NaN

import pandas as pd
df3 = pd.DataFrame({'a':[1,2],'b':[3,4],'x':[5,6]})
df4 = pd.DataFrame({'a':[1,2,3],'b':[3,4,5],'y':[6,7,8]})

# 以左表为基表
res1 = pd.merge(df3, df4, how='left', on=['a','b'])

# 以右表为基表
res2 = pd.merge(df3, df4, how='right', on=['a','b'])

 结果展示

df3

df4

res1

res2

以下是其他的案例:

import pandas as pd
df3 = pd.DataFrame({'a':[1,2],'b':[3,4],'x':[5,6]})
df4 = pd.DataFrame({'a':[1,2,3],'b':[3,4,5],'y':[6,7,8]})
# 取两个表的并集
# pd.merge(left, right, how='outer', on=['key1','key2'])
res3 = pd.merge(df3, df4, how='outer', on=['a','b'])
# 取两个表的交集
# pd.merge(left, right, how='inner', on=['key1','key2'])
res4 = pd.merge(df3, df4, how='inner', on=['a','b'])

结果展示

df3

df4

res3

res4

一个有重复连接键的例子

import pandas as pd
left = pd.DataFrame({'A':[1,2],'B':[2,2]})
right = pd.DataFrame({'A':[4,5,6],'B':[2,2,2]})
res = pd.merge(left, right, on='B', how='outer')
res1 = pd.merge(left, right, on='B')
res2 = pd.merge(left, right, how='outer')

结果展示

left

right

res

res1

res2

5.连接指示

如果想知道数据连接后是左表内容还是右表内容,可以使用indicator参数显示连接方式

如果将indicator设置为True,则会增加名为_merge的列,显示这列是从何而来

_merge有以下三个值:

  • left_only:只在左表中
  • right_only:只在右表中
  • both:两个表都有
import pandas as pd
df1 = pd.DataFrame({'a':[1,2],'b':[5,6]})
df2 = pd.DataFrame({'a':[2,1,0],'y':[6,7,8]})

# 显示连接指示列
res = pd.merge(df1, df2, on='a', how='outer', indicator=True)

结果展示

df1

df2

res

总结

到此这篇关于Python Pandas数据合并pd.merge用法的文章就介绍到这了,更多相关Pandas数据合并pd.merge内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • 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

  • pandas数据合并之pd.concat()用法详解

    目录 一.简介 二 .代码 例1:上下堆叠拼接 例2:axis=1 左右拼接 一.简介 pd.concat()函数可以沿着指定的轴将多个dataframe或者series拼接到一起. 基本语法: pd.concat( objs, axis=0, join=‘outer’, join_axes=None,ignore_index=False, keys=None, levels=None, names=None, verify_integrity=False, sort=None, copy=Tr

  • 一文搞懂Python中Pandas数据合并

    目录 1.concat() 主要参数 示例 2.merge() 参数 示例 3.append() 参数 示例 4.join() 示例 数据合并是数据处理过程中的必经环节,pandas作为数据分析的利器,提供了四种常用的数据合并方式,让我们看看如何使用这些方法吧! 1.concat() concat() 可用于两个及多个 DataFrame 间行/列方向进行内联或外联拼接操作,默认对行(沿 y 轴)取并集. 使用方式 pd.concat( objs: Union[Iterable[~FrameOr

  • Python基础之pandas数据合并

    一.concat concat函数是在pandas底下的方法,可以将数据根据不同的轴作简单的融合 pd.concat(objs, axis=0, join='outer', join_axes=None, ignore_index=False, keys=None, levels=None, names=None, verify_integrity=False) axis: 需要合并链接的轴,0是行,1是列join:连接的方式 inner,或者outer 二.相同字段的表首尾相接 #现将表构成l

  • 详解pandas数据合并与重塑(pd.concat篇)

    1 concat concat函数是在pandas底下的方法,可以将数据根据不同的轴作简单的融合 pd.concat(objs, axis=0, join='outer', join_axes=None, ignore_index=False, keys=None, levels=None, names=None, verify_integrity=False) 参数说明 objs: series,dataframe或者是panel构成的序列lsit axis: 需要合并链接的轴,0是行,1是列

  • 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

  • python进行数据合并concat/merge

    目录 1.pd.concat 2. df.append 3. pd.merge() 4. df.join 总结 前言: 两个表中的数据,要根据关键字段,进行合并.在Excel中可以使用vlookup的方式,在python中可以使用concat或者是merge的方法. 1.pd.concat pd.concat 函数: 拼接的对象可以是series,还可以是dataframe 拼接对象的个数不受限axis 控制拼接方向(既支持上下拼接,也支持左右拼接) 左右拼接 axis=1,左右拼接的依据是行索

  • 对python pandas 画移动平均线的方法详解

    数据文件 66001_.txt 内容格式: date,jz0,jz1,jz2,jz3,jz4,jz5 2012-12-28,0.9326,0.8835,1.0289,1.0027,1.1067,1.0023 2012-12-31,0.9435,0.8945,1.0435,1.0031,1.1229,1.0027 2013-01-04,0.9403,0.8898,1.0385,1.0032,1.1183,1.0030 ... ... pd_roll_mean1.py # -*- coding: u

  • 对python pandas读取剪贴板内容的方法详解

    我使用的Python3.5,32版本win764位系统,pandas0.19版本,使用df=pd.read_clipboard()的时候读不到数据,百度查找解决方法,找到了一个比较靠谱的 打开site-packages\pandas\io\clipboard.py 在 text = clipboard_get() 后面一行 加入这句: text = text.decode('UTF-8') 保存,然后就可以使用了 df=pd.read_clipboard() #变成正常的了 下次可以在其他地方复

  • 基于DataFrame筛选数据与loc的用法详解

    DataFrame筛选数据与loc用法 python中pandas下的DataFrame是一个很不错的数据结构,附带了许多操作.运算.统计等功能. 如何从一个DataFrame中筛选中出一个元素呢. 以tushare返回的交易日信息为例. df = ts.trade_cal() 数据如下: calendarDate isOpen 0 1990/12/19 1 1 1990/12/20 1 2 1990/12/21 1 3 1990/12/22 0 4 1990/12/23 0 5 1990/12

  • python pandas修改列属性的方法详解

    使用astype如下: df[[column]] = df[[column]].astype(type) type即int.float等类型. 示例: import pandas as pd data = pd.DataFrame([[1, "2"], [2, "2"]]) data.columns = ["one", "two"] print(data) # 当前类型 print("----\n修改前类型:&quo

  • 对python中assert、isinstance的用法详解

    1. assert 函数说明: Assert statements are a convenient way to insert debugging assertions into a program: assert语句是一种插入调试断点到程序的一种便捷的方式. 使用范例: assert 3 == 3 assert 1 == True assert (4 == 4) print('-----------') assert (3 == 4) ''' 抛出AssertionError异常,后面程序不

  • Python基础之Numpy的基本用法详解

    一.数据生成 1.1 手写数组 a = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]) # 一维数组 b = np.array([[1, 2], [3, 4]]) #二维数组 1.2 序列数组 numpy.arange(start, stop, step, dtype),start默认0,step默认1 c = np.arange(0, 10, 1, dtype=int) # =np.arange(10) [0 1 2 3 4 5 6 7 8 9] d

  • Python可视化Matplotlib折线图plot用法详解

    目录 1.完善原始折线图 - 给图形添加辅助功能 1.1 准备数据并画出初始折线图 1.2 添加自定义x,y刻度 1.3 中文显示问题解决 1.4 添加网格显示 1.5 添加描述信息 1.6 图像保存 2. 在一个坐标系中绘制多个图像 2.1 多次plot 2.2 显示图例 2.3 折线图的应用场景 折线图是数据分析中非常常用的图形.其中,折线图主要是以折线的上升或下降来表示统计数量的增减变化的统计图.用于分析自变量和因变量之间的趋势关系,最适合用于显示随着时间而变化的连续数据,同时还可以看出数

随机推荐