开发手册 欢迎您!
软件开发者资料库

Python Pandas pandas.DataFrame.merge函数方法的使用

Pandas是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。Pandas 纳入了大量库和一些标准的数据模型,提供了高效地操作大型数据集所需的工具。Pandas提供了大量能使我们快速便捷地处理数据的函数和方法。你很快就会发现,它是使Python成为强大而高效的数据分析环境的重要因素之一。本文主要介绍一下Pandas中pandas.DataFrame.merge方法的使用。

DataFrame.merge(right, how='inner', on=None, left_on=None, right_on=None, left_index=False, right_index=False, sort=False, suffixes=('_x', '_y'), copy=True, indicator=False, validate=None)     源代码

通过按列或索引,执行数据库的连接操作来合并DataFrame对象。
如果通过列连接列,则将忽略DataFrame索引。否则,如果通过列或列上的索引或索引连接索引,则将传递索引。

参数:

right: DataFrame

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

1)left:仅使用左框架中的键,类似于SQL左外连接; 保留关键顺序

2)right:仅使用右框架中的键,类似于SQL右外连接; 保留关键顺序

3)outer:使用来自两个帧的键的并集,类似于SQL全外连接; 按字典顺序排序键

4)inner:使用两个帧的键交集,类似于SQL内连接; 保留左键的顺序

on:标签或列表

要加入的列或索引级别名称。这些必须在两个DataFrame中找到。

如果on为None且未合并索引,则默认为两个DataFrame中列的交集。

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

要在左侧DataFrame中连接的列级或索引级别名称。

也可以是左数据帧长度的数组或数组列表。这些数组被视为列。

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

要在右侧DataFrame中连接的列级或索引级别名称。

也可以是右侧DataFrame长度的数组或数组列表。这些数组被视为列。

left_index:布尔值,默认为False

使用左侧DataFrame中的索引作为连接键。如果是MultiIndex,

则其他DataFrame中的键数(索引或列数)必须与级别数相匹配

right_index:布尔值,默认为False

使用右侧DataFrame中的索引作为连接键。与left_index相同的说明

sort:布尔值,默认为False

在结果DataFrame中按字典顺序对连接键进行排序。如果为False,

则连接键的顺序取决于连接类型(关键字如何)

suffixes:2长度序列(元组,列表,...)

后缀分别应用于左侧和右侧的重叠列名称

copy:boolean,默认为True

如果为False,则不要复制不必要地数据

indicator:布尔值或字符串,默认为False

如果为True,则添加一列以输出名为“_merge”的DataFrame,

其中包含每行源的信息。如果string,具有每行源的信息的列,

将被添加到输出DataFrame,并且列将被命名为string的值。

信息列为分类型,对于其合并键仅出现在“left”DataFrame中,

观察值为“left_only”,对于其合并键仅出现在“right”DataFrame中,

观察值为“right_only”,如果为获取合并密钥可以在两者中找到。

validate:string,默认无

如果指定,则检查merge是否为指定类型。

“one_to_one”或“1:1”:检查合并键是否在左右数据集中都是唯一的。

“one_to_many”或“1:m”:检查合并键在左数据集中是否唯一。

“many_to_one”或“m:1”:检查合并键在右侧数据集中是否唯一。

“many_to_many”或“m:m”:允许,但不会导致检查。

版本0.21.0中的新功能。

返回:

merged:DataFrame

如果输出类型是DataFrame的子类,则输出类型将与“left”相同。

版本0.23.0中添加了对指定索引级别的支持,即on,left_on和 right_on参数

例如,

>>> A              >>> B
    lkey value         rkey value
0   foo  1         0   foo  5
1   bar  2         1   bar  6
2   baz  3         2   qux  7
3   foo  4         3   bar  8

>>> A.merge(B, left_on='lkey', right_on='rkey', how='outer')
   lkey  value_x  rkey  value_y
0  foo   1        foo   5
1  foo   4        foo   5
2  bar   2        bar   6
3  bar   2        bar   8
4  baz   3        NaN   NaN
5  NaN   NaN      qux   7