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对象列表时,不支持、lsuffix和rsuffix上的参数。 例子 >>> 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 设置为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 总是使用其他索引,但我们可以使用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