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


相关推荐

  • fprintf函数的用法_itoa函数

    fprintf函数的用法_itoa函数fprintf()用于文件操作#includeintfprintf(FILE*stream,constchar*format,…);fprintf()函数根据指定的format(格式)发送信息(参数)到由stream(流)指定的文件.

    2022年10月19日
    2
  • spring定时任务详解(@Scheduled注解)

    spring定时任务详解(@Scheduled注解)在springMVC里使用spring的定时任务非常的简单,如下:(一)在xml里加入task的命名空间xmlns:task=”http://www.springframework.org/schema/task”http://www.springframework.org/schema/taskhttp://www.springframework.org/schema/task

    2022年7月17日
    27
  • 王艳茹网课答案创业基础超星尔雅答案2021

    王艳茹网课答案创业基础超星尔雅答案2021创业的概念与功能1【单选题】下列对创业定义理解不正确的一项是(B)A、创业者通过资源整合来达到创业目标B、创业伴随新行业的出现C、寻求机会是产生创业活动的重要一环D、创业伴随新价值的产生创业的要素和阶段1【单选题】创业的关键要素不包括(C)A、机会B、团队C、技术D、资源2【多选题】创业可分为哪些阶段(ABCD)A、机会识别B、资源整合C、新企业创办D、企业生存3【多选题】下列说法中正确的有(ABC)A、商业机会是创业过程的重…

    2022年6月6日
    65
  • rdesktop教程_rdesktop 退出全屏

    rdesktop教程_rdesktop 退出全屏我的配置:1.准备工作:ubuntu端:Windows端:1.计算机属性远程设置远程,勾选:允许远程连接到此计算机;2.远程桌面–允许ubuntu端,执行命令:2.命令解释

    2022年8月4日
    5
  • c++入门教程–-3数据类型,变量与常量

    c++入门教程–-3数据类型,变量与常量

    2021年3月12日
    152
  • plsql连接oracle数据库报ora 12154错误解决方法

    plsql连接oracle数据库报ora 12154错误解决方法今天遇到一个问题,plsql连接oracle数据库报ora12154错误,本文将为您详细介绍此等问题的几种解决方法(我是使用第二种方法解决的)解决方法如下:1.先检查服务器端的监听服务是否打开,如果没有打开请启动其监听客户端:tnsping服务器Linux下:#>lsnrctlstatus查看监听状态#>lsnrctlstart启动监听 

    2022年7月19日
    18

发表回复

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

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