dask.dataframe.DataFrame.join
dask.dataframe.DataFrame.join¶
- DataFrame.join(other, on=None, how='left', lsuffix='', rsuffix='', npartitions=None, shuffle_method=None)[源代码]¶
连接另一个DataFrame的列。
此文档字符串是从 pandas.core.frame.DataFrame.join 复制而来的。
Dask 版本可能存在一些不一致性。
将列与 other DataFrame 的索引或键列连接。通过传递列表,可以高效地通过索引一次连接多个 DataFrame 对象。
- 参数
- 其他DataFrame、Series 或包含它们任意组合的列表
索引应与此表中的某一列相似。如果传递的是一个 Series,则其 name 属性必须设置,并且该属性将用作结果合并 DataFrame 中的列名。
- 开str, 字符串列表, 或类似数组的对象, 可选
调用者中的列或索引级别名称,用于与`other`中的索引进行连接,否则进行索引对索引的连接。如果给出多个值,other DataFrame 必须具有 MultiIndex。如果连接键尚未包含在调用 DataFrame 中,可以传递一个数组作为连接键。类似于 Excel 的 VLOOKUP 操作。
- 如何{‘left’, ‘right’, ‘outer’, ‘inner’, ‘cross’}, 默认 ‘left’
如何处理两个对象的操作。
left: 使用调用帧的索引(或在指定时使用列)
right: 使用 other 的索引。
outer: 将调用帧的索引(如果指定了on,则为列)与`other`的索引合并,并按字典顺序排序。
inner: 将调用帧的索引(或指定列)与 other 的索引进行交集,保留调用帧的顺序。
cross: 从两个数据框创建笛卡尔积,保留左侧键的顺序。
- lsuffixstr, 默认 ‘’
用于左侧框架重叠列的后缀。
- rsuffixstr, 默认 ‘’
用于右侧框架重叠列的后缀。
- 排序bool, 默认 False (Dask 中不支持)
按连接键的字典顺序对结果 DataFrame 进行排序。如果为 False,则连接键的顺序取决于连接类型(how 关键字)。
- 验证str, 可选 (Dask 中不支持)
如果指定,检查连接是否为指定类型。
“one_to_one” 或 “1:1”: 检查连接键在左右数据集中是否唯一。
“one_to_many” 或 “1:m”: 检查左数据集中的连接键是否唯一。
“many_to_one” 或 “m:1”:检查右数据集中的连接键是否唯一。
“many_to_many” 或 “m:m”:允许,但不会导致检查。
1.5.0 新版功能.
- 返回
- DataFrame
包含调用者和 other 中所有列的数据框。
参见
DataFrame.merge
对于列对列的操作。
注释
传递 DataFrame 对象列表时,不支持 on、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
如果我们想使用键列进行连接,我们需要将键设置为 df 和 other 中的索引。连接后的 DataFrame 将以键作为其索引。
>>> 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', 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