【Python】数据分析常用函数merge

merge函数位于pandas库中,用于合并连接DateFrame或者Series,其中Series对象可视为DataFrame的一个单列。

pd.merge(df1,df2,how='inner',on=None,left_on=None,right_on=None,
            left_index=None,right_index=None,sort=None,suffixes=('_x','_y'),
            copy=None,indicator=None,validate=None)

参数如下:

df1:DataFrame或者已命名的Series

        拼接的DataFrame1,哪个表在前则为左表

df2:DataFrame或者已命名的Series

        拼接的DataFrame2,哪个表在后则为右表

how:{‘left’, ‘right’, ‘outer’, ‘inner’, ‘cross’},默认为 ‘inner’

        left:仅使用左DataFrame的字典,类似于SQL的左连接,保留字典的排序

        right:仅使用右DataFrame的字典,类似于SQL的右连接,保留字典的排序

        outer:使用两DataFrame字典的并集,类似于SQL的外连接,按照字典顺序排序

        inner:使用两DataFrame字典的交集,类似于SQL的内连接,保留左DataFrame字典顺序

        cross:创建两DataFrame的笛卡尔乘积,保留左DataFrame字典顺序

on:标签或列表

        需要连接的列,必须在左DataFrame和右DataFrame中同时存在。如果on值为None且left_index和right_index为False,默认

left_on:标签或列表

        左DataFrame需要连接的列或索引级别键(列标签)

right_on:标签或列表

        右DataFrame需要连接的列或索引级别键(列标签)

left_index:bool,默认为False

        如果为True,则使用左表中的行标签作为其连接键。 对于多级索引的表,级别数必须与右表 的连接键数相匹配。

right_index:bool,默认为False

        与left_index类似

sort:布尔值,默认为False

        对输出DataFrame的字典进行排序。如果为False,则根据其连接方式进行排序。

suffixes:

        用于重叠列的字符串后缀元组。 默认为(‘x’,’ y’)

copy:bool,默认为False

        复制传递对象

indicator:bool或str,默认为False

        如果为True,添加一列名为“_merge”到输出的DataFrame,其中包含各行的数据来源。“_merge”包括三种分类:left_only、right_only、both,其中left_only指合并键仅出现在左DataFrame,right_only指合并键仅出现在右DataFrame,both指合并键在左右DataFrame都有。如果indicator输入的是str,该列被命名对应的str值。

validate:str,可选择的,默认为None

        检查merge是否为特定类型

        “one_to_one”或“1:1”:检查合并键在左DataFrame和右DataFrame内是否唯一

        “one_to_many”或“1:m”:检查合并键在左DataFrame内是否唯一

        “many_to_one”或“m:1”:检查合并键在右DataFrame内是否唯一

        “many_to_many”或“m:m”:但不会引发检查

实例:

1、创建DataFrame,或者导入数据表。

import pandas as pd
df1 = pd.DataFrame({
    '姓名': ['张三', '李四', '王五', '赵六','boss'],
    '职位': ['总经理', '组长', '业务员', '实习生','老板'],
    '工资': ['10000', '7000', '5000', '3000','30000']
    })
df2 = pd.DataFrame({
    '姓名': ['张三', '李四', '王五', '赵六','孙七'],
    '职位': ['总经理', '组长', '业务员', '实习生','兼职'],
    '上班天数': [22,22,26,22,15],
    '绩效':[10000,8000,6000,0,0]
    })

2、左连接

pd.merge(df1,df2,how='left',on=['姓名','职位'])

3、右连接

pd.merge(df1,df2,how='right',on=['姓名','职位'])

4、内连接(此时的内连接与左连接一样)

pd.merge(df1,df2,how='inner',on=['姓名','职位'])

5、外连接

pd.merge(df1,df2,how='outer',on=['姓名','职位'])


        

  • 41
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值