pandas.DataFrame.join#

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

联接另一个DataFrame的列。

使用以下项联接列 other 索引或键列上的DataFrame。通过传递列表一次按索引高效联接多个DataFrame对象。

参数
otherDataFrame、系列或DataFrame列表

索引应类似于此列中的一列。如果传递了Series,则必须设置其名称属性,该属性将用作结果联接的DataFrame中的列名。

on字符串、字符串列表或类似数组,可选

调用方中要联接索引的列或索引级名称 other ,否则将按索引联接。如果给出多个值,则 other DataFrame必须具有多索引。如果数组尚未包含在调用DataFrame中,则可以将该数组作为联接键传递。类似于Excel VLOOKUP操作。

how{‘左’,‘右’,‘外’,‘内’},默认‘左’

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

  • 左:使用调用框架的索引(如果指定为ON,则使用列)

  • 右图:使用 other 的指数。

  • 外部:调用框架的索引(如果指定为ON,则为列)与 other 的索引,并按词典顺序对其进行排序。

  • 内部:调用框架的索引(如果指定为ON,则为列)的形式交集 other 的索引,保持调用的顺序为1。

  • 十字:从两个帧创建笛卡尔积,保留左关键点的顺序。

    1.2.0 新版功能.

lsuffix字符串,默认为‘’

从左侧框架的重叠列中使用的后缀。

rsuffix字符串,默认为‘’

要从右侧框架的重叠列中使用的后缀。

sort布尔值,默认为False

按联接键按词典顺序对结果DataFrame进行排序。如果为False,则联接键的顺序取决于联接类型(How关键字)。

退货
DataFrame

数据帧,其中包含调用方和 other

参见

DataFrame.merge

用于列上列操作。

注意事项

参数 onlsuffix ,以及 rsuffix 的列表时不受支持 DataFrame 对象。

支持将索引级别指定为 on 在版本0.23.0中添加了参数。

示例

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

使用DataFrame的索引联接DataFrame。

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

如果要使用键列进行连接,则需要将键设置为这两个列中的索引 dfother 。联接的DataFrame将使用key作为其索引。

>>> df.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始终使用 other 的索引,但我们可以使用 df 。此方法在结果中保留原始DataFrame的索引。

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

使用非唯一键值显示了它们是如何匹配的。

>>> df = pd.DataFrame({'key': ['K0', 'K1', 'K1', 'K3', 'K0', 'K1'],
...                    'A': ['A0', 'A1', 'A2', 'A3', 'A4', 'A5']})
>>> df
  key   A
0  K0  A0
1  K1  A1
2  K1  A2
3  K3  A3
4  K0  A4
5  K1  A5
>>> df.join(other.set_index('key'), on='key')
  key   A    B
0  K0  A0   B0
1  K1  A1   B1
2  K1  A2   B1
3  K3  A3  NaN
4  K0  A4   B0
5  K1  A5   B1