美文网首页
Pandas.merge() 连接合并函数

Pandas.merge() 连接合并函数

作者: 沧海2122537190 | 来源:发表于2020-03-12 18:09 被阅读0次

    基础语法

    pandas.merge(left, right,how: str = 'inner',
       on=None, left_on=None, right_on=None,
       left_index: bool = False, right_index: bool = False, 
       sort: bool = False, suffixes=('_x', '_y'), copy: bool = True,
       indicator: bool = False, validate=None)
    

    语法参数说明:

    参数 介绍 默认值 设定值
    left 需要合并的左侧DataFrame -- --
    right 需要合并的右侧DataFrame或者有列名的Series -- --
    how 连接两个DataFrame的方式 inner inner;outer;left;right
    on 用于连接的列名,必须为两个DataFrame同时存在的列名 -- --
    left_on 用于连接的左侧DataFrame列名 -- --
    right_on 用于连接的右侧DataFrame列名 -- --
    left_index 将左侧的行索引用作其连接键 False True;False
    right_index 将右侧的行索引用作其连接键 False True;False
    sort 根据连接键对合并后的数据进行排列 False True;False
    suffixes 对两个数据集中出现的重复列,新数据集中加上后缀_x,_y进行区别 (‘_x’, ‘_y’) --
    copy 是否避免重复数据 True True;False
    indicator 指示符 False True;False
    validate 0.21.0版中的新功能,检查合并是否为指定的类型 None one_to_one或1:1,one_to_many或 1:m,many_to_one或m:1,many_to_many或m:m

    用法示例

    1、right为Series

    df1 = pd.DataFrame({'key': ['a', 'b', 'c', 'd'], 'value': [1, 2, 3, 4]})
    s1 = pd.Series(['a', 'c', 'd', 'e'])
    s1.name = 'key'
    df = pd.merge(df1, s1, on='key')
    
    right为Series

    2、连接方式(how)

    #需要操作的DataFrame
    df1 = pd.DataFrame({'key': ['a', 'b', 'c', 'd'], 'value': [1, 2, 3, 4]})
    df2 = pd.DataFrame({'key': ['a', 'c', 'd', 'e'], 'value': [5, 6, 7, 8]})
    
    DataFrame

    df = pd.merge(df1, df2,on='key')

    how为空

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

    inner

    df = pd.merge(df1, df2, on='key', how='outer')

    outer

    df = pd.merge(df1, df2, on='key', how='left')

    left

    df = pd.merge(df1, df2, on='key', how='right')

    right

    3、 连接键名称不同(left_on, right_on)

    df1 = pd.DataFrame({'lkey': ['a', 'b', 'c', 'd'], 'value': [1, 2, 3, 4]})
    df2 = pd.DataFrame({'rkey': ['a', 'c', 'd', 'e'], 'value': [5, 6, 7, 8]})
    df = pd.merge(df1, df2, left_on='lkey', right_on='rkey')
    
    DataFrame
    merge

    4、sort 合并后是否按key排序

    df1 = pd.DataFrame({'key': ['c', 'b', 'a', 'd'], 'value': [1, 2, 3, 4]})
    df2 = pd.DataFrame({'key': ['c', 'a', 'd', 'b'], 'value': [5, 6, 7, 8]})
    df = pd.merge(df1, df2, on='key', sort=True)
    df = pd.merge(df1, df2, on='key', sort=False)
    
    sort=True
    sort=False或省略sort

    5、left_inde, right_index

    df1 = pd.DataFrame({'key': ['c', 'b', 'a', 'd'], 'value': [1, 2, 3, 4]})
    df2 = pd.DataFrame({'key': ['c', 'a', 'e', 'd'], 'value': [5, 4, 3, 2]})
    

    df = pd.merge(df1, df2, left_index=True, right_index=True)

    left_index=True, right_index=True

    df = pd.merge(df1, df2, left_index=True, right_on='value')

    left_index=True, right_on='value'

    df = pd.merge(df1, df2, left_on='value', right_index=True)

    left_on='value', right_index=True

    6、suffixes

    df1 = pd.DataFrame({'key': ['a', 'b', 'c', 'd'], 'value': [1, 2, 3, 4]})
    df2 = pd.DataFrame({'key': ['a', 'c', 'd', 'e'], 'value': [5, 6, 7, 8]})
    df = pd.merge(df1, df2, on='key')
    df = pd.merge(df1, df2, on='key', suffixes=('1', '2'))
    
    suffixes 默认值(‘_x’, ‘_y’) ('1', '2')

    相关文章

      网友评论

          本文标题:Pandas.merge() 连接合并函数

          本文链接:https://www.haomeiwen.com/subject/asfmdhtx.html