pandas中merge函数的解读

  • left:参与合并的左侧DataFrame;
  • right:参与合并的右侧DataFrame;
  • how:连接方式,有inner、left、right、outer,默认为inner;inner表示两个集合的交集,left表示以第一个集合为准做交集,right以第二个为准,outer取并集,不存在的元素标记为NaN
  • on:指的是用于连接的列索引名称,必须存在于左右两个DataFrame中,如果没有指定且其他参数也没有指定,则以两个DataFrame列名交集作为连接键;
  • left_on:左侧DataFrame中用于连接键的列名,这个参数左右列名不同但代表的含义相同时非常的有 用;
  • right_on:右侧DataFrame中用于连接键的列名;
  • left_index:使用左侧DataFrame中的行索引作为连接键;
  • right_index:使用右侧DataFrame中的行索引作为连接键;#行索引,横向连接
  • sort:默认为True,将合并的数据进行排序,设置为False可以提高性能;
  • suffixes:字符串值组成的元组,用于指定当左右DataFrame存在相同列名时在列名后面附加的后缀名称,默认为('_x', '_y');#x和y可以修改为想设置的名称
  • copy:默认为True,总是将数据复制到数据结构中,设置为False可以提高性能;
  • indicator:显示合并数据中数据的来源情况。

ep:

import pandas as pd
left = pd.DataFrame({'key1':['K0','K0','K1','K2'], 
                     'key2':['K0','K1','K0','K1'],
                     'A':['A0','A1','A2','A3'],
                     'B':['B0','B1','B2','B3']})
right = pd.DataFrame({'key1':['K0','K1','K1','K2'], 
                     'key2':['K0','K0','K0','K0'],
                     'C':['C0','C1','C2','C3'],
                     'D':['D0','D1','D2','D3']})
print(left)
print(right)
#how = 'inner' 'outer' 'left' 'right'
res = pd.merge(left, right,on = ['key1','key2'],how = 'right')

print(res)

  key1 key2   A   B
0   K0   K0  A0  B0
1   K0   K1  A1  B1
2   K1   K0  A2  B2
3   K2   K1  A3  B3
  key1 key2   C   D
0   K0   K0  C0  D0
1   K1   K0  C1  D1
2   K1   K0  C2  D2
3   K2   K0  C3  D3
  key1 key2    A    B   C   D
0   K0   K0   A0   B0  C0  D0
1   K1   K0   A2   B2  C1  D1
2   K1   K0   A2   B2  C2  D2
3   K2   K0  NaN  NaN  C3  D3

 在right中以{K0,K0}、{K1,K0}、{K1,K0}、{K2,K0}的顺序在left中遍历,如果与{key1,key2}有交集,整行打印,在left中没有找到相同的,忽略left中的一行,继续遍历下一行。即right中有,left中没有,以right为准,left缺失的部分以NaN补齐。

indicator=True显示两个集合中哪个集合会进入交集,

也可以改名indicator='重合在哪',即将_merge改成'重合在哪'

  key1 key2    A    B   C   D      _merge
0   K0   K0   A0   B0  C0  D0        both
1   K1   K0   A2   B2  C1  D1        both
2   K1   K0   A3   B3  C1  D1        both
3   K1   K0   A2   B2  C2  D2        both
4   K1   K0   A3   B3  C2  D2        both
5   K2   K0  NaN  NaN  C3  D3  right_only

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值