DataFrame.merge函数

DataFrame.merge函数 首页 / Pandas入门教程 / DataFrame.merge函数

Pandas merge()将两个数据集合并为一个,并根据公共属性或列对齐行。它是DataFrame对象之间所有标准数据库联接操作的入口点:

merge - 语法

pd.merge(left, right, how='inner', on=None, left_on=None, right_on=None,
left_index=False, right_index=False, sort=True)

merge - 参数

  • right            -   DataFrame或命名为Series 它是一个与DataFrame合并的对象。
  • how             -   {'left','right','outer','inner'},默认的" inner" 要执行的合并类型。
    • left      - 它仅使用左框架中的键,类似于SQL左外部联接;保留键顺序。
    • right   - 它仅使用右框架中的键,类似于SQL右外部联接;保留键顺序。
    • outer  - 它使用了两个框架中的键并集,类似于SQL完全外部联接;按字典顺序对键进行排序。
    • inner  -  它使用两个框架中关键点的交集,类似于SQL内部联接。保留左键的顺序。
  • on                   -   标签或列表,它是要连接的列或索引级别的名称。
  • left_on          -   标签或列表,或类似数组的 它是左侧DataFrame中的列或索引级别名称,用作键。它可以是长度等于DataFrame长度的数组。
  • right_on       -  标签或列表,或类似数组的 它是来自右侧DataFrame的列或索引级别的名称,用作键。它可以是长度等于DataFrame长度的数组。
  • left_index    -  布尔型,默认为False 如果为true,它将使用左侧DataFrame的索引作为连接键。
  • right_index -  布尔型,默认为False 它使用来自右侧DataFrame的索引作为连接键。它具有相同的用法作为left_index。
  • sort                 - 布尔型,默认为False 如果为True,它将在结果DataFrame中按字典顺序对连接键进行排序。
  • suffixes          -  (str,str)的元组,默认为('_x','_y') 后缀适用于分别在左侧和右侧DataFrame中重叠列名称。
  • copy                -  布尔型,默认为True 如果为True,则返回DataFrame的副本。 否则,可以避免复制。
  • indicator       - 布尔值或str,默认为False 如果为True,它将添加一列以输出DataFrame" _merge ",其中包含有关每一行源的信息。如果是字符串,则将在每行的源上包含信息的列添加到输出DataFrame,并将该列命名为v由于字符串。信息列定义为分类类型,其值为:
    • " left_only"     -  用于其合并键仅出现在DataFrame的"左侧"的观测值。
    • " right_only"  -  用于其合并键仅出现在DataFrame的"右侧"的观测值。
    • "both"               -   用于其合并键仅出现在DataFrame的"两侧"的观测值。
  • validate     -    str,可选 如果指定,它将检查下面给出的合并类型:
    • " one_to_one"或" 1:1"            -  它检查是否一对一。
    • " one_to_many"或" 1:m"       -  它检查是否一对多。
    • " many_to_one"或" m:1"       -  它检查是否多对一。
    • " many_to_many"或" m:m"  -  它检查是否多对多。

示例1:在一个键上合并两个DataFrame

# import the pandas library
import pandas as pd
left = pd.DataFrame({
   'id':[1,2,3,4],
   'Name': ['John', 'Parker', 'Learnfk', 'Parker'],
   'subject_id':['sub1','sub2','sub4','sub6']})
right = pd.DataFrame({
    'id':[1,2,3,4],
   'Name': ['William', 'Albert', 'Tony', 'Allen'],
   'subject_id':['sub2','sub4','sub3','sub6']})
print (left)
print (right)

输出

    id      Name     subject_id

0   1       John        sub1
1   2       Parker      sub2
2   3       Learnfk       sub4
3   4       Parker      sub6

    id      Name     subject_id

0   1       William     sub2
1   2       Albert      sub4
2   3       Tony        sub3
3   4       Allen       sub6 

例2:在多个键上合并两个DataFrame:

import pandas as pd
left = pd.DataFrame({
   'id':[1,2,3,4,5],
   'Name': ['Alex', 'Amy', 'Allen', 'Alice', 'Ayoung'],
   'subject_id':['sub1','sub2','sub4','sub6','sub5']})
right = pd.DataFrame({
	'id':[1,2,3,4,5],
   'Name': ['Billy', 'Brian', 'Bran', 'Bryce', 'Betty'],
   'subject_id':['sub2','sub4','sub3','sub6','sub5']})
print pd.merge(left,right,on='id')

输出

    id   Name_x    subject_id_x   Name_y     subject_id_y
0   1     John      sub1          William     sub2
1   2     Parker    sub2          Albert      sub4
2   3     Learnfk     sub4          Tony        sub3
3   4     Parker    sub6          Allen       sub6

祝学习愉快!(内容编辑有误?请选中要编辑内容 -> 右键 -> 修改 -> 提交!)

技术教程推荐

微服务架构实战160讲 -〔杨波〕

说透敏捷 -〔宋宁〕

后端存储实战课 -〔李玥〕

互联网人的英语私教课 -〔陈亦峰〕

职场求生攻略 -〔臧萌〕

正则表达式入门课 -〔涂伟忠〕

说透5G -〔杨四昌〕

徐昊 · TDD项目实战70讲 -〔徐昊〕

快手 · 移动端音视频开发实战 -〔展晓凯〕

好记忆不如烂笔头。留下您的足迹吧 :)