Pandas中merge和join的区别

可以说merge包含了join的操作,merge支持通过列或索引连表,而join只支持通过索引连表,只是简化了merge的索引连表的参数

示例

定义一个left的DataFrame

left=pd.DataFrame([
    [1,2],[3,4],[5,6]
],
    index=['a','c','e'],
    columns=['chenqionghe','muscle']
)


定义一个right的DataFrame

right=pd.DataFrame([
    [7,8],[9,10],[11,12],[13,14],
],
    index=['b','c','d','e'],
    columns=['light','weight']
)

然后,我们使用merge通过索引合并这两个Dataframe,如下

left.merge(right,left_index=True,right_index=True,how='outer')

然后,通过join方法实现相同的操作

left.join(right,how='outer')

可以看出join其实是省略了参数的merge,并且没有基于列的连表功能

merge的参数

  • left:参与合并的左侧DataFrame
  • right:参与合并的右侧DataFrame
  • how:inner、outer、left、right其中之一
  • left_index:将左侧的行索引用作其连接键的列
  • right_index:类似于left_index
  • sort:根据连接键对合并后的数据进行排序,默认为True。有时在处理大数据集时,禁用该选项可获得更好的性能
  • suffixes:字符串值元组,用于追加到重叠列名,默认为(‘_x‘,‘_y‘)
  • copy:设置为False,可以在某些我死情况下避免将数据复制到结果数据结构中,默认总是复制

原文地址:https://www.cnblogs.com/chenqionghe/p/12231546.html

时间: 2024-10-18 08:31:53

Pandas中merge和join的区别的相关文章

Python入门5(pandas中merge中的参数how)

1 import pandas as pd 2 df1 = pd.DataFrame([[1,2,3],[5,6,7],[3,9,0],[8,0,3]],columns=['x1','x2','x3']) 3 df2 = pd.DataFrame([[1,2],[4,6],[3,9]],columns=['x1','x4']) 4 print (df1) 5 print (df2) 6 df3 = pd.merge(df1,df2,how = 'left',on='x1') 7 print (d

DataStage中merge、lookup、join的区别与联系

三者功能类似,都可以将表连接起来进行输出. 区别主要体现在性能上. lookup就是一个表在另一个表中找,处理过程都在内存进行,因此占用内存较多,一般大事实表和小纬表用这种方式关联效率高. merge和join的处理过程不需用占大量内存.不同在于merge要先把key值排序在做join,因此要求key不能重复,Merge的输出集可以设为多个.

【Python数据分析】pands中的Merge与join

目录 1.Merge 1.1 简单关联:left_on与right_on 1.2 使用how参数:指定连接方式 1.3 right_index与right_index 1.4 sort参数:排序 2.join 1.Merge Pandas具有全功能的,高性能内存中连接操作,与关系型数据库中的连接操作类似. 语法: pd.merge(left, right, how='inner', on=None, left_on=None, right_on=None, left_index=False, r

SQL中inner join、outer join和cross join的区别

摘自:http://blog.csdn.net/scythe666/article/details/51881235 缺省情况下是inner join,开发中使用的left join和right join属于outer join,另外outer join还包括full join.下面我通过图标让大家认识它们的区别. 现有两张表,Table A 是左边的表.Table B 是右边的表.其各有四条记录,其中有两条记录name是相同的: 1.INNER JOIN 产生的结果是AB的交集 SELECT

sql中的inner join, left join, right join的区别

下面介绍一下 inner join, left join, right join这者之间的区别 现在我假设有A表和B表 left join select * from A a left join B b on a.aid = b.bid; 这时以左边的A表为基础表,A表的数据全部显示, B表的数据只显示符合on后条件表达式的进行显示,右边字段数据不足的用null填补 right join select * from A a right join B b on a.aid = b.bid; 这时以

MySQL的left join中on与where的区别

关于 “A LEFT JOIN B ON 条件表达式” 的一点提醒 ON 条件(“A LEFT JOIN B ON 条件表达式”中的ON)用来决定如何从 B 表中检索数据行,即使on中包含有A表中的列的限制条件,也不会过滤A的任何数据(A的数据只会通过where过滤). 如果 B 表中没有任何一行数据匹配 ON 的条件,将会额外生成一行所有列为 NULL 的数据 在匹配阶段 WHERE 子句的条件都不会被使用.仅在匹配阶段完成以后,WHERE 子句条件才会被使用.它将从匹配阶段产生的数据中检索过

SQL中join和cross join的区别

SQL中的连接可以分为内连接,外连接,以及交叉连接 . 1. 交叉连接CROSS JOIN 如果不带WHERE条件子句,它将会返回被连接的两个表的笛卡尔积,返回结果的行数等于两个表行数的乘积: 举例,下列A.B.C 执行结果相同,但是效率不一样: A:SELECT * FROM table1 CROSS JOIN table2 B:SELECT * FROM table1,table2 C:select * from table1 a inner join table2 b A:select a

SQL Tuning 基础概述06 - 表的连接方式:Nested Loops Join,Merge Sort Join & Hash Join

nested loops join 嵌套循环 merge sort join 排序合并 hash join 哈希连接 nested loops join(嵌套循环)   驱动表返回几条结果集,被驱动表访问多少次,有驱动顺序,无须排序,无任何限制. 驱动表限制条件有索引,被驱动表连接条件有索引. hints:use_nl() merge sort join(排序合并)   驱动表和被驱动表都是最多访问1次,无驱动顺序,需要排序(SORT_AREA_SIZE),连接条件是<>或like导致无法使用

pandas中DataFrame

python数据分析工具pandas中DataFrame和Series作为主要的数据结构. 本文主要是介绍如何对DataFrame数据进行操作并结合一个实例测试操作函数. 1)查看DataFrame数据及属性 df_obj = DataFrame() #创建DataFrame对象 df_obj.dtypes #查看各行的数据格式 df_obj['列名'].astype(int)#转换某列的数据类型 df_obj.head() #查看前几行的数据,默认前5行 df_obj.tail() #查看后几