个性化阅读
专注于IT技术分析

Pandas DataFrame.merge()用法详解

本文概述

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

句法

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

参数

右:DataFrame或命名的Series

它是一个与DataFrame合并的对象。

方式:{‘左’, ‘右’, ‘外’, ‘内’}, 默认为’内’

要执行的合并类型。

  • left:仅使用左框架中的键, 类似于SQL左外部联接;保留关键顺序。
  • 右:它仅使用右框架中的键, 类似于SQL右外部联接;保留关键顺序。
  • 外部:它使用了两个框架中键的并集, 类似于SQL完全外部联接;按字典顺序对键进行排序。
  • 内部:它使用两个框架中关键点的交集, 类似于SQL内部联接;保留左键的顺序。

开启:标签或列表

它是要连接的列或索引级别的名称。必须在左侧和右侧的DataFrame中都可以找到它。如果on为None且未在索引上合并, 则默认为两个DataFrame中列的交集。

left_on:标签或列表, 或类似数组

它是左侧DataFrame中的列或索引级别名称, 用作键。它可以是长度等于DataFrame长度的数组。

right_on:标签或列表, 或类似数组

它是来自右侧DataFrame的列或索引级别名称, 用作键。它可以是长度等于DataFrame长度的数组。

left_index:布尔值, 默认为False

如果为true, 它将使用左侧DataFrame的索引作为连接键。对于MultiIndex(分层), 另一个DataFrame中的许多键(索引或某些列)应与级别数匹配。

right_index:布尔值, 默认为False

它使用来自右侧DataFrame的索引作为连接键。它的用法与left_index相同。

排序:布尔值, 默认为False

如果为True, 它将在结果DataFrame中按字典顺序对连接键进行排序。否则, 联接键的顺序取决于联接类型(how关键字)。

后缀:(str, str)的元组, 默认值(‘_x’, ‘_y’)

后缀适用于分别在左侧和右侧DataFrame中重叠列名称。列使用(False, False)值在重叠时引发异常。

复制:bool, 默认为True

如果为True, 则返回DataFrame的副本。

否则, 可以避免复制。

指示符:bool或str, 默认为False

如果为True, 它将添加一列以输出DataFrame” _merge”, 其中包含有关每一行源的信息。如果是字符串, 则将在每行的源上包含信息的列添加到输出DataFrame, 并将该列命名为字符串的值。信息列定义为分类类型, 其值为:

  • 合并键仅出现在DataFrame的”左侧”的观测值的” left_only”,
  • 为观察项定义了” right_only”, 其中合并键仅出现在DataFrame的”右边”,
  • 如果在两个视图中都找到观察的合并键, 则”两者”。

验证: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', 'Smith', '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       Smith       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     Smith     sub4          Tony        sub3
3   4     Parker    sub6          Allen       sub6

赞(0) 打赏
未经允许不得转载:srcmini » Pandas DataFrame.merge()用法详解
分享到: 更多 (0)

评论 抢沙发

评论前必须登录!

 

觉得文章有用就打赏一下文章作者

微信扫一扫打赏