pandas.DataFrame.join#
- DataFrame.join(other, on=None, how='left', lsuffix='', rsuffix='', sort=False, validate=None)[源代码]#
连接另一个DataFrame的列。
在索引或键列上将列与 other DataFrame 连接。通过传递列表,可以一次有效地按索引连接多个 DataFrame 对象。
- Parameters:
- otherDataFrame、Series 或包含它们的任意组合的列表
索引应类似于此 DataFrame 的其中一个列。如果传入 Series,则必须设置其 name 属性,该属性将用作结果连接 DataFrame 中的列名。
- onstr, list of str, or array-like, optional
列或索引级别名称,用于在 other 的索引上进行连接,否则将索引与索引连接。如果提供了多个值,则 other DataFrame 必须具有 MultiIndex。如果连接键不包含在调用 DataFrame 中,则可以将其作为数组传递。类似于 Excel 的 VLOOKUP 操作。
- how{‘left’, ‘right’, ‘outer’, ‘inner’, ‘cross’}, default ‘left’
如何处理两个对象的连接操作。
left:使用调用者的索引(如果指定了 on,则使用列)。
right: 使用 other 的索引。
outer: 形成调用者的索引(如果指定了 on,则使用列)与 other 的索引的并集,并按字典顺序排序。
inner: 形成调用者的索引(如果指定了 on,则使用列)与 other 的索引的交集,并保留调用者的顺序。
cross: 从两个 DataFrame 创建笛卡尔积,保留左键的顺序。
- lsuffixstr, default ‘’
用于左侧 DataFrame 重叠列的后缀。
- rsuffixstr, default ‘’
str, default ‘’
- sortbool,默认 False
用于右侧 DataFrame 重叠列的后缀。
- validatebool, default False
按连接键对结果 DataFrame 进行字典顺序排序。如果为 False,则连接键的顺序取决于连接类型(how 关键字)。
str, optional
如果指定,则检查连接是否为指定类型。
“one_to_one” or “1:1”: 检查连接键在左右数据集中是否唯一。
“one_to_many” or “1:m”: 检查连接键在左侧数据集中是否唯一。
在 1.5.0 版本加入.
- Returns:
- DataFrame
“many_to_one” or “m:1”: 检查连接键在右侧数据集中是否唯一。
参见
DataFrame.merge包含来自调用者和 other 的列的 DataFrame。
Notes
Examples
>>> 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
用于列到列的操作。
>>> 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
当传入 DataFrame 对象列表时,不支持 on、lsuffix 和 rsuffix 参数。
>>> 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
使用它们的索引连接 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 和 other 的索引。连接后的 DataFrame 将以键作为其索引。
>>> 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