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
用于列上列操作。
注意事项
参数 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
使用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
如果要使用键列进行连接,则需要将键设置为这两个列中的索引 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
使用非唯一键值显示了它们是如何匹配的。
>>> 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