python.pandas.DataFrame合并

数据集的合并主要依靠merge函数,类似于数据库的join函数,源代码为:

DataFrame.merge(self,right,how ='inner',on = None,left_on = None,right_on = None,left_index = False,right_index = False,sort = False,后缀='_ x'' _y '),copy = True,indicator = False,validate = None

right:要连接的对象。
how:连接的方式,类似sql的join函数。默认为inner。
inner为内连接
outer为外连接
left为左连接
right为右连接
on:类似sql的on,连接依靠的列或者索引行。如果on是None并且不是依靠索引行来连接的,那么默认连接依靠的是两个对象相交的列。
left_on:连接的左表的键。
right_on:连接的右表的键。
left_index:bool类型,默认为False,使用左表的索引为连接键,如果它是层次化索引,那么右表的索引级别必须一致。
right_index:bool类型,默认为False,使用右表的索引为连接键,如果它是层次化索引,那么左表的索引级别必须一致。
sort:bool类型,默认为False,在结果中按照字典顺序对连接键排序,如果是False,则排序方式取决于连接类型(how)。
后缀:str的元组,为两表中重复的列名添加后缀。
copy:bool类型,默认为True,如果是False,请尽量避免复制。
后面两个不常用,此处不作赘述。

案例;

#新建两个数组
df1 = pd.DataFrame({'key':['b','b','a','c','a','a','b'],
                   'data1':range(7)})
df2 = pd.DataFrame({'key':['a','b','d'],
                   'data2':range(3)})

df1:
在这里插入图片描述
df2:
在这里插入图片描述

#合并两个数组
df1.merge(df2)
#或者
pd.merge(df1,df2)

结果为:
在这里插入图片描述
这里默认为inner方式连接,连接的列默认是两个数组的交集(key),代码实质为:

df1.merge(df2, how='inner', on='key')

我们可以换一下数据:

#新建两个数组
#没有交集
df1 = pd.DataFrame({'lkey':['b','b','a','c','a','a','b'],
                   'data1':range(7)})
df2 = pd.DataFrame({'rkey':['a','b','d'],
                   'data2':range(3)})

内连接:

df1.merge(df2, how='inner', left_on='lkey', right_on='rkey')

在这里插入图片描述
外连接:

df1.merge(df2, how='outer', left_on='lkey', right_on='rkey')

在这里插入图片描述
左连接:

df1.merge(df2, how='left', left_on='lkey', right_on='rkey')

在这里插入图片描述
右连接:

f1.merge(df2, how='right', left_on='lkey', right_on='rkey')

在这里插入图片描述

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值