pandas——merge

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)

参数含义
left
right
on=[]根据哪几列进行合并
left_on
right_on
how=‘left’/‘right’/‘inner’/‘outer’左外连接、右外连接、内连接、外连接
indicator参数为True、False、Str,其中若为Str,则表示indicator这一列的列名是啥
left_index, right_index默认是按照列的形式,使用这俩,可以改成使用行的形式
suffix给重复列添加后缀,以示区分

suffix
英 /'sʌfɪks/ 美 /'sʌfɪks/
v. 添后缀
n. 后缀,词尾

on=[]

使用哪一列
和sql中的自然连接差不多,结果去除重复列,但不去除重复行

import numpy as np
import pandas as pd

d1 = pd.DataFrame({'B': [1, 2, 3, 4],
                   'A': ['a', 'b', 'c', 'd'],
                   'key':['k0', 'k1', 'k2', 'k3']})
d2 = pd.DataFrame({'C': [1, 2, 4, 5, 1],
                   'B': ['a', 'b', 'd', 'e', 'a'],
                   'key':['k0', 'k1', 'k3', 'k4', 'k0']})
print(pd.merge(d1, d2, on='key'))

在这里插入图片描述

import numpy as np
import pandas as pd

d1 = pd.DataFrame({'A': [1, 2, 3, 4],
                   'B': ['b', 'a', 'c', 'd'],
                   'key': ['k0', 'k1', 'k2', 'k3']})
d2 = pd.DataFrame({'C': [1, 2, 4, 5, 1],
                   'B': ['a', 'b', 'd', 'e', 'a'],
                   'key': ['k0', 'k1', 'k3', 'k4', 'k0']})
print(d1)
print(pd.merge(d1, d2, on=['key', 'B']))

在这里插入图片描述

how

连接的方式

import numpy as np
import pandas as pd

d1 = pd.DataFrame({'A': [1, 2, 3, 4],
                   'B': ['b', 'a', 'c', 'd'],
                   'key': ['k0', 'k1', 'k2', 'k3']})
d2 = pd.DataFrame({'C': [1, 2, 4, 5, 1],
                   'B': ['a', 'b', 'd', 'e', 'a'],
                   'key': ['k0', 'k1', 'k3', 'k4', 'k0']})
print(d1)
print()
print(pd.merge(d1, d2, on=['key', 'B'], how='left'))  # 左外连接
print(pd.merge(d1, d2, on=['key', 'B'], how='right'))  # 右外连接
print(pd.merge(d1, d2, on=['key', 'B'], how='outer'))  # 外连接

在这里插入图片描述

indicator

在结果中专门多出一列,来表示在merge时,是 left 还是 right 有数据

import pandas as pd

d1 = pd.DataFrame({'A': [1, 2, 3, 4],
                   'B': ['b', 'a', 'c', 'd'],
                   'key': ['k0', 'k1', 'k2', 'k3']})
d2 = pd.DataFrame({'C': [1, 2, 4, 5, 1],
                   'B': ['a', 'b', 'd', 'e', 'a'],
                   'key': ['k0', 'k1', 'k3', 'k4', 'k0']})
print(d1)
print()
print(pd.merge(d1, d2, on=['key', 'B'], how='left', indicator=True))  # 左外连接
print(pd.merge(d1, d2, on=['key', 'B'], how='right', indicator='indicate'))  # 右外连接

在这里插入图片描述

left_index, right_index

也不知道具体是咋用的

import pandas as pd

d1 = pd.DataFrame({'A': [1, 2, 3, 4],
                   'B': ['a', 'a', 'c', 'd'],
                   'key': ['k0', 'k1', 'k2', 'k3']})
d2 = pd.DataFrame({'C': [1, 2, 4, 5, 1],
                   'B': ['a', 'b', 'd', 'e', 'a'],
                   'key': ['k0', 'k1', 'k3', 'k4', 'k0']})
print(d1)
print(d2)
print()
print(pd.merge(d1, d2, left_index=True, right_index=True, how='inner'))

在这里插入图片描述

suffixes=[’’, ‘’]

import numpy as np
import pandas as pd

d1 = pd.DataFrame({'A': [1, 2, 3, 4],
                   'B': ['a', 'a', 'c', 'd'],
                   'key': ['k0', 'k1', 'k2', 'k3']})
d2 = pd.DataFrame({'C': [1, 2, 4, 5, 1],
                   'B': ['a', 'b', 'd', 'e', 'a'],
                   'key': ['k0', 'k1', 'k3', 'k4', 'k0']})
print(d1)
print(d2)
print()
print(pd.merge(d1, d2, left_index=True, right_index=True, how='inner', suffixes=['_left','_right']))

在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值