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

DataFrame.join(other, on=None, how='left', lsuffix='', rsuffix='', sort=False) 源代码

在索引或键列上与其他DataFrame连接列。通过传递列表,有效地通过索引连接多个DataFrame对象。

参数:

other:DataFrame,具有名称字段集的Series,或DataFrame列表

索引,应该类似于此列中的一列。如果传递了Series,则必须设置其name属性,

并将其用作生成的连接DataFrame中的列名

on:name,tuple / names 列表或array-like

调用者中的列或索引级别名称,用于连接其他索引,

否则加入index-on-index。如果给定多个值,则另一个 DataFrame,

必须具有MultiIndex。如果数组尚未包含在调用DataFrame中,

则可以将数组作为连接键传递。像Excel VLOOKUP操作一样

How:{'left','right','outer','inner'},默认:'left'

如何处理这两个对象的操作。

1)left:使用调用框架的索引(如果指定了on,则使用列)

2)right:使用其他框架的索引

3)outer:调用框架索引的形式联合(或指定的列)与其他框架的索引,

并按字典顺序对其进行排序

4)inner:调用框架索引(或指定的列)与其他框架索引的形式交集,

保留调用框架的索引顺序

lsuffix:string

使用左框架重叠列的后缀

rsuffix:string

使用右框架重叠列的后缀

sort:布尔值,默认为False

通过联接键按词法对结果Dataframe进行排序。如果为False,

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

返回:

连接的DataFrame

说明

传递DataFrame对象列表时,不支持on,lsuffix和rsuffix选项
版本0.23.0中添加了对指定索引级别,作为on参数的支持

例如,

>>> caller = pd.DataFrame({'key': ['K0', 'K1', 'K2', 'K3', 'K4', 'K5'],
...                        'A': ['A0', 'A1', 'A2', 'A3', 'A4', 'A5']})
>>> caller
    A key
0  A0  K0
1  A1  K1
2  A2  K2
3  A3  K3
4  A4  K4
5  A5  K5
>>> other = pd.DataFrame({'key': ['K0', 'K1', 'K2'],
...                       'B': ['B0', 'B1', 'B2']})
>>> other
    B key
0  B0  K0
1  B1  K1
2  B2  K2

使用索引加入DataFrames

>>> caller.join(other, lsuffix='_caller', rsuffix='_other')
>>>     A key_caller    B key_other
    0  A0         K0   B0        K0
    1  A1         K1   B1        K1
    2  A2         K2   B2        K2
    3  A3         K3  NaN       NaN
    4  A4         K4  NaN       NaN
    5  A5         K5  NaN       NaN

如果我们想要使用键列进行连接,我们需要将键设置为调用者和其他者的索引。连接的DataFrame将键作为索引。

>>> caller.set_index('key').join(other.set_index('key'))
>>>      A    B
    key
    K0   A0   B0
    K1   A1   B1
    K2   A2   B2
    K3   A3  NaN
    K4   A4  NaN
    K5   A5  NaN

使用键列连接的另一个选项,使用on参数。DataFrame.join是使用其他索引,但我们可以使用调用者中的任何列。此方法在结果中保留原始调用者的索引。

>>> caller.join(other.set_index('key'), on='key')
>>>     A key    B
    0  A0  K0   B0
    1  A1  K1   B1
    2  A2  K2   B2
    3  A3  K3  NaN
    4  A4  K4  NaN
    5  A5  K5  NaN