python 数据合并函数merge( )[通俗易懂]

python 数据合并函数merge( )[通俗易懂]python中的merge函数与sql中的join用法非常类似,以下是merge()函数中的参数:merge(left,right,how=’inner’,on=None,left_on=None,right_on=None,left_index=False,right_index=False,sort=False,suffixes=(‘_x’,’_y’),cop…

大家好,又见面了,我是你们的朋友全栈君。

python中的merge函数与sql中的 join 用法非常类似,以下是merge( )函数中的参数:

merge(left, right, how='inner', on=None, left_on=None, right_on=None, left_index=False, right_index=False, sort=False, suffixes=('_x', '_y'), copy=True, indicator=False, validate=None)

一、左右连接键名一样

import pandas as pd
df1=pd.DataFrame({'key':['a','b','a','b','b'],'value1':range(5)})
df2=pd.DataFrame({'key':['a','c','c','c','c'],'value2':range(5)})
display(df1,df2,pd.merge(df1,df2))

df1

   key value1          
0	a	0
1	b	1
2	a	2
3	b	3
4	b	4

df2

   key value2
0	a	0
1	c	1
2	c	2
3	c	3
4	c	4

pd.merge(df1,df2) ##以df1、df2中相同的列名key进行连接,默认how=’inner’, pd.merge(df1,df2,on=’key’,how=’inner’)

   key value1 value2
0	a	  0	    0
1	a	  2	    0

pd.merge(df1,df2,how=’outer’) ##  全连接,取并集

	key	value1	value2
0	a	0.0	0.0
1	a	2.0	0.0
2	b	1.0	NaN
3	b	3.0	NaN
4	b	4.0	NaN
5	c	NaN	1.0
6	c	NaN	2.0
7	c	NaN	3.0
8	c	NaN	4.0

pd.merge(df1,df2,how=’left’)  ### 左连接,左边取全部,右边取部分,没有值则用NaN填充

   key value1 value2
0	a	 0	  0.0
1	b	 1	  NaN
2	a	 2	  0.0
3	b	 3	  NaN
4	b	 4	  NaN

pd.merge(df1,df2,how=’right’) ###  右连接,右边取全部,左边取部分,没有值则用NaN填充

  key value1 value2
0	a	0.0	  0
1	a	2.0	  0
2	c	NaN	  1
3	c	NaN	  2
4	c	NaN	  3
5	c	NaN	  4

二、左右连接键名不一样

如果两个DataFrame的左右连接键的列名不一样,可以用left_on,right_on来进行指定

df3=pd.DataFrame({'lkey':['a','b','a','b','b'],'data1':range(5)})
df4=pd.DataFrame({'rkey':['a','c','c','c','c'],'data2':range(5)})

df3

    lkey  data1
0    a      0
1    b      1
2    a      2
3    b      3
4    b      4

df4

    rkey  data2
0    a      0
1    c      1
2    c      2
3    c      3
4    c      4

pd.merge(df3,df4,left_on=’lkey’,right_on=’rkey’)   ### 内连接,默认how=’inner’

    lkey  data1 rkey  data2
0    a      0    a      0
1    a      2    a      0

pd.merge(df3,df4,left_on=’lkey’,right_on=’lkey’,how=’outer’)  ### 全连接

    lkey  data1 rkey  data2
0    a    0.0    a    0.0
1    a    2.0    a    0.0
2    b    1.0  NaN    NaN
3    b    3.0  NaN    NaN
4    b    4.0  NaN    NaN
5  NaN    NaN    c    1.0
6  NaN    NaN    c    2.0
7  NaN    NaN    c    3.0
8  NaN    NaN    c    4.0

pd.merge(df3,df4,left_on=’lkey’,right_on=’rkey’,how=’left’)  ### 左连接

    lkey  data1 rkey  data2
0    a      0    a    0.0
1    b      1  NaN    NaN
2    a      2    a    0.0
3    b      3  NaN    NaN
4    b      4  NaN    NaN

pd.merge(df3,df4,left_on=’lkey’,right_on=’rkey’,how=’right’)  ### 右连接

    lkey  data1 rkey  data2
0    a    0.0    a      0
1    a    2.0    a      0
2  NaN    NaN    c      1
3  NaN    NaN    c      2
4  NaN    NaN    c      3
5  NaN    NaN    c      4

三、索引作为连接键

df5=pd.DataFrame(np.arange(12).reshape(3,4),index=list('abc'),columns=['v1','v2','v3','v4'])
df6=pd.DataFrame(np.arange(12,24,1).reshape(3,4),index=list('abd'),columns=['v5','v6','v7','v8'])

df5

    v1  v2  v3  v4
a   0   1   2   3
b   4   5   6   7
c   8   9  10  11

df6

   v5  v6  v7  v8
a  12  13  14  15
b  16  17  18  19
d  20  21  22  23

pd.merge(df5,df6,left_index=True,right_index=True)

	v1	v2	v3	v4	v5	v6	v7	v8
a	0	1	2	3	12	13	14	15
b	4	5	6	7	16	17	18	19
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/130141.html原文链接:https://javaforall.net

(0)
上一篇 2022年4月28日 上午8:40
下一篇 2022年4月28日 上午9:20


相关推荐

  • mongodb和MySQL 区别_MongoDB和MySQL的区别

    mongodb和MySQL 区别_MongoDB和MySQL的区别一 1 基于分布式文件存储 2 高负载情况下添加更多节点 可以保证服务器性能 3 将数据存储为一个文档二 比较 1 稳定性 2 索引 索引放在内存中 能够提升随机读写的性能 如果索引不能完全放在内存 一旦出现随机读写比较高的时候 就会频繁地进行磁盘交换 MongoDB 的性能就会急剧下降 3 占用的空间很大 因为它属于典型空间换时间原则的类型 那么它的磁盘空间比普通数据库会浪费一些 而且到目前为止它还没有实现

    2026年3月19日
    2
  • 回归算法应用场景实例二十则「建议收藏」

    回归算法应用场景实例二十则「建议收藏」回归算法应用场景实例二十则

    2022年4月21日
    43
  • 状况与状态区别_402状态码

    状况与状态区别_402状态码http状态码301和302详解及区别一直对http状态码301和302的理解比较模糊,在遇到实际的问题和翻阅各种资料了解后,算是有了一定的理解。这里记录下,希望能有新的认识。大家也共勉。官方的比较简洁的说明:301redirect:301代表永久性转移(PermanentlyMoved)302redirect:302代表…

    2022年10月3日
    7
  • lsblk请参阅块设备

    lsblk请参阅块设备

    2022年1月7日
    41
  • 【PMP】项目浮动的三种时间「建议收藏」

    【PMP】项目浮动的三种时间「建议收藏」自由浮动时间不影响后续工作最早可以开始时间的前提下,这项工作可以拖延的时间叫做自由浮动时间。总浮动时间不影响项目总工期的情况下活动可以拖延的总时间。项目浮动时间在已经排好的总工期的基础上,领导或者甲方

    2022年8月1日
    9
  • 说说如何搭建 HTTP 服务器

    说说如何搭建 HTTP 服务器这里使用 ApacheHTTPSe 来搭建 HTTP 服务器 1 在搜索引擎中输入 ApacheHTTPSe 下载 关键字 下载 ApacheHTTPSe 的安装包 形如 httpd 2 2 25 win32 x86 no ssl msi2 双击运行安装程序 3 在此输入域名 服务器名以及电子邮箱地址 4 在此选择自定义安装 Cust

    2026年3月18日
    1

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号