连接另一个DataFrame的列。
与连接列other索引或键列上的DataFrame。通过传递一个列表,一次有效地通过索引连接多个DataFrame对象。
参数:
other:DataFrame, Series, 或 list of DataFrame索引应与此列中的一列相似。如果传递了Series,则必须设置其name属性,并将其用作结果联接的DataFrame中的列名称。
on:str, list of str, 或 array-like, 可选参数调用方中要加入索引的列或索引级别名称other,否则加入index-on-index。如果给出多个值,则otherDataFrame必须具有MultiIndex。如果调用DataFrame中尚未包含数组,则可以将其作为连接键传递。就像Excel的VLOOKUP操作一样。
how:{‘left’, ‘right’, ‘outer’, ‘inner’}, 默认为 ‘left’如何处理两个对象的操作。
左:使用调用框架的索引(如果指定了列,则为列)
右:使用other的索引。
external:与调用框架的索引(如果指定为on,则为列)的形式联合other的索引,然后对其进行排序。从字典上看。
inner:与调用框架的索引(或列,如果指定为on)形成交集,other的索引,保留调用顺序。
lsuffix:str, 默认为 ‘’在左框架的重叠列中使用的后缀。
rsuffix:str, 默认为 ‘’在右框架的重叠列中使用的后缀。
sort:bool, 默认为 False通过联接关键字按字典顺序对结果DataFrame进行排序。如果为False,则联接键的顺序取决于联接类型(how关键字)。
返回值:
DataFrame包含来自调用方和调用方的列的 DataFrame other。
注意:
参数on, lsuffix和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
使用其索引加入DataFrames。
>>> 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
如果要使用键列进行联接,则需要将键设置为两个键的索引df和other。加入的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