pandas.DataFrame.join #

数据框。join ( other , on = None , how = 'left' , lsuffix = '' , rsuffix = '' , sort = False , validate = None ) [来源] #

连接另一个 DataFrame 的列。

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

参数
其他DataFrame、Series 或包含它们任意组合的列表

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

str、str 列表或类似数组上,可选

调用者中要连接到other中的索引的列或索引级别名称,否则连接索引上的索引。如果给定多个值,则另一个DataFrame 必须具有 MultiIndex。如果调用 DataFrame 中尚未包含数组,则可以传递数组作为连接键。类似于 Excel VLOOKUP 运算。

如何{'left', 'right', 'outer', 'inner', 'cross'}, 默认'left'

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

  • 左:使用调用帧的索引(或列,如果指定了)

  • 右:使用别人的索引。

  • 外部:将调用框架的索引(如果指定了则为列)与其他框架的索引形成并集,并按字典顺序排序。

  • 内部:形成调用帧的索引(或列,如果指定了 on)与其他索引的交集,保留调用帧的顺序。

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

lsuffix str,默认 ''

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

rs后缀str,默认 ''

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

排序bool,默认 False

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

验证str,可选

如果指定,则检查连接是否属于指定类型。

  • “one_to_one”或“1:1”:检查连接键在左右数据集中是否唯一。

  • “one_to_many”或“1:m”:检查连接键在左侧数据集中是否唯一。

  • “many_to_one”或“m:1”:检查连接键在正确的数据集中是否唯一。

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

1.5.0 版本中的新增内容。

返回
数据框

包含来自调用方和其他方的列的数据框。

也可以看看

DataFrame.merge

用于列对列的操作。

笔记

传递DataFrame对象列表时,不支持、lsuffixrsuffix上的参数。

例子

>>> 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。

>>> 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

如果我们想使用键列进行连接,我们需要将 key 设置为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 总是使用其他索引,但我们可以使用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', validate='m:1')
  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