merge

作者: 喝奶茶不加奶茶 | 来源:发表于2020-08-09 20:49 被阅读0次

一、merge函数

pandas提供了一个类似关系数据库的连接(join)操作的方法merge,可以根据一个或多个键将不同DataFrame中的行连接起来。

准备数据以便进行说明:

df1= pd.DataFrame({'key1': ['K0', 'K1', 'K1', 'K2'],
                      'A': ['A0', 'A1', 'A2', 'A3'],
                      'B': ['B0', 'B1', 'B2', 'B3']}) 
df2 = pd.DataFrame({'key1': ['K0', 'K1', 'K1', 'K2'],
                      'key2': ['K0', 'K0', 'K0', 'K0'],
                      'C': ['C0', 'C1', 'C2', 'C3'],
                      'D': ['D0', 'D1', 'D2', 'D3']})
df3 = pd.DataFrame({'key1': ['K0', 'K1', 'K1', 'K2'],
                      'key2': ['K0', 'K0', 'K0', 'K0'],
                      'C': ['C0', 'C1', 'C2', 'C3']})

merge语法说明:

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

参数说明

1、left和right
pd.merge()只能用于两个表的拼接,且用于左右连接。
如果需要拼接的两个表中,有相同的列信息,那么进行拼接的时候即使不指定以哪个字段为主键,函数也会默认用信息相同的列做主键对两个表进行拼接。
df1


df2



可以看出df1和df2两个表中字段‘key1’是重复列,所以在使用pd.merge()拼接时不用指定主键,直接把一个表的名字传递给参数left,另一个表的名字传递给参数right即可。


2、参数on
如果两张表有两列以上信息相同,可以指定哪一列作为主键,如果不指定,相同信息的列都会作为拼接依据。
3、参数how

  • how参数控制拼接方式,默认内连接(inner),那么不同的拼接方式对结果有怎样的影响呢,内连接是只将两个表主键一致的信息拼接到一起。
  • 左连接是保留所有左表的信息,把右表中主键与左表一致的信息拼接进来,标签不能对齐的部分,用NAN进行填充。
  • 右连接是保留所有右表的信息,把左表中主键与左表一致的信息拼接进来,标签不能对齐的部分,用NAN进行填充。
    4、参数lefton和righton
    两个表里没有完全一致的列名,但是有信息一致的列,这个时候需要指定每个表中用来做主键的字段是哪一个,就用到了lefton和righton这两个参数。
    5、参数suffixes
    有时候两个表中有好几个相同的列名,除了作为主键的列之外,其他名字相同的列被拼接到表中的时候会有一个后缀表示这个列来自于哪个表格,用于区分名字相同的列,这个后缀默认是(x和y)
    6、 参数indicator
    在pd.concat()中可以通过参数设定显示拼接后的表中哪些信息来自于哪一个表格,在pd.merge()中也可以进行这样的操作,就是通过indicator参数设置,默认是False不显示数据来源,把参数设置为True就可以了。


merge函数的作用是将两个pandas对象横向合并,遇到重复的索引项时会使用笛卡尔积,默认inner连接,可选left、outer、right连接。常用应用场景:针对同一个主键存在两张包含不同字段的表,将其整合到一张表里。
df1

所谓左连接,就是指以第一个表索引为基准,右边的表中如果不在左边的的则不加入,如果在左边的,就以笛卡尔积的方式加入。

merge/join与concat的不同之处在于on参数,可以指定某一个对象为key来进行连接。

  • 笛卡尔积
    笛卡尔积是指在数学中,两个集合X和Y的笛卡尔积,又称直积,表示为X xY。第一个对象是X的成员,而第二个对象是Y的所有可能有序对的其中一个成员。

concat是上下拼接。

相关文章

  • Git常见场景解决方法总结

    放弃某次merge 假如你merge的时候产生了很大的冲突,想先放弃某次merge,你可以: git merge ...

  • Git:真实 merge

    前言 Git:真实 merge 是一种 merge 的方式,除去真实 merge,肯定还有不真实的 merge,就...

  • R的merge用法(2018-06-05)

    R语言-merge函数 merge函数的声明: merge( x, y, by = intersect(names...

  • git merge and rebase

    一、merge合并分支每次merge的时候都会生成一个commit 标志是merge的信息 Merge remot...

  • git merge一个指定文件

    git里面的merge是全merge ,没有单个文件merge。 要实现一个文件的merge ,可以使用git c...

  • pandas表连接

    Pandas Dataframe有三种连接方法,分别是merge,join,concat。 merge merge...

  • Git系列4:git merge合并操作

    Fast forward merge 步骤: 解决Merge冲突

  • git merge

    冲突状态放弃 merge git merge --abort 冲突的文件使用其它分支 git merge -Xth...

  • leetcode每日一题

    Merge Sorted Array Question leetcode: Merge Sorted Array ...

  • Merge Sort

    Merge Sort Based on the idea of divide and conquer, merge...

网友评论

    本文标题:merge

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