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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • oracle 创建用户进行登录

    oracle 创建用户进行登录oracle只有一个数据库叫orcl,ip地址数据库名称也叫sid:oracle帐号用户名密码示例帐号scott/tiger使用cmd打开doc窗口。输入sqlplus/nolog登录进去就是sys用户,管理system用户conn/assysdba让sys拥有dba权限修改system密码alterusersyst

    2022年5月19日
    40
  • vue业务组件封装_怎么去设计一个组件封装

    vue业务组件封装_怎么去设计一个组件封装vue:组件、组件化开发、父子组件传值。

    2022年9月24日
    1
  • java总结体会_Java课程总结心得体会

    java总结体会_Java课程总结心得体会不知不觉中以学习Java将近4个月了,在这几个月的学习中我从一开始的迷茫懵逼,到现在的懵逼迷茫中,写下了这篇这个学期课程的Java学习心得体会。首先,我认为作为一个该开始学习Java的小白,在开始学习之前无论你有多大的热情与信心,都会在之后的学习中被程序啪啪打脸,让你无限的迷茫与懵逼。于是呢在学习中我们要学会”不抛弃,不放弃“,只要能坚定的去做你会发现,你的努力或给你带来回报,虽然很多时候你努力…

    2022年7月7日
    416
  • fec浅析_fec13

    fec浅析_fec13fec(ForwardErrorCorrection),向前纠错。fec主要用于在传输过程中,发现带宽时够的,但是会有丢包的情况。一般用于udp传输,比如webrtc传视频,视频会议传输视频。另外提一下的是,udp传输视频一般会把一帧视频分为很多个分组,为啥要分组,因为如果不分组,传输过程中丢失了任何一个分组,整帧数据就丢失了。按mtu以下的分组传输好处是,可以实现udt,和fec了。比如一帧分了5个分组,增加一个fec冗余包,当前面5个分组中丢失任何一个,都可以通过这个fec冗

    2022年8月11日
    4
  • ftp扫描软件下载_哪国最爱运动

    ftp扫描软件下载_哪国最爱运动不知道大家用过哪几种ftp扫描工具,是不是感觉都是大同小异的呢?其实市面上的ftp扫描工具功能都是差不多的,当然也还是有一点差别的,那一点的差别可能就是我们选择那一种ftp扫描工具的原因。不论怎么说,也都是要选择自己喜欢的ftp扫描工具来使用。第一款:IIS7服务器管理工具这款工具里面的ftp扫描工具体验感是比较好的,除了一般ftp扫描工具里面都有的批量管理,它还有很多自己设计的功能。可以说这就是它成功的关键。它还能够进行定时上传下载、定时备份和多任务同时进行。哦对,它还有自动更新的功能。IIS7服务

    2022年10月1日
    2
  • CLTPHP5.0发布

    CLTPHP5.0发布

    2021年10月29日
    45

发表回复

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

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