当前位置: 首页>>编程示例 >>用法及示例精选 >>正文


Python pyspark DataFrame.join用法及代码示例

本文简要介绍 pyspark.pandas.DataFrame.join 的用法。

用法:

DataFrame.join(right: pyspark.pandas.frame.DataFrame, on: Union[Any, Tuple[Any, …], List[Union[Any, Tuple[Any, …]]], None] = None, how: str = 'left', lsuffix: str = '', rsuffix: str = '') → pyspark.pandas.frame.DataFrame

加入另一个 DataFrame 的列。

在索引或键列上使用 right DataFrame 连接列。通过传递列表,按索引一次有效地连接多个DataFrame对象。

参数

right: DataFrame, Series
on: str, list of str, or array-like, optional

调用者中要加入 right 中的索引的列或索引级别名称,否则加入 index-on-index。如果给定多个值,则 right DataFrame 必须具有 MultiIndex。如果调用 DataFrame 中尚未包含数组,则可以传递数组作为连接键。类似于 Excel VLOOKUP 运算。

how: {‘left’, ‘right’, ‘outer’, ‘inner’}, default ‘left’

如何处理这两个对象的操作。

  • 左:使用 left 框架的索引(或指定的列)。

  • 右:使用 right 的索引。

  • 外部:将left框架的索引(或指定了on的列)与右索引形成联合,并对其进行排序。按字典顺序。

  • 内部:形成left框架的索引(或指定了on的列)与right的索引的交集,保持left的顺序。

lsuffixstr,默认“”

从左框架的重叠列中使用的后缀。

rsuffixstr,默认“”

使用 right 框架的重叠列的后缀。

返回

DataFrame

包含来自 leftright 的列的 DataFrame 。

注意

传递 DataFrame 对象列表时,不支持 on、lsuffix 和 rsuffix 参数。

例子

>>> psdf1 = ps.DataFrame({'key': ['K0', 'K1', 'K2', 'K3'],
...                      'A': ['A0', 'A1', 'A2', 'A3']},
...                     columns=['key', 'A'])
>>> psdf2 = ps.DataFrame({'key': ['K0', 'K1', 'K2'],
...                      'B': ['B0', 'B1', 'B2']},
...                     columns=['key', 'B'])
>>> psdf1
  key   A
0  K0  A0
1  K1  A1
2  K2  A2
3  K3  A3
>>> psdf2
  key   B
0  K0  B0
1  K1  B1
2  K2  B2

使用索引加入DataFrames。

>>> join_psdf = psdf1.join(psdf2, lsuffix='_left', rsuffix='_right')
>>> join_psdf.sort_values(by=join_psdf.columns)
  key_left   A key_right     B
0       K0  A0        K0    B0
1       K1  A1        K1    B1
2       K2  A2        K2    B2
3       K3  A3      None  None

如果我们想使用键列进行连接,我们需要将 key 设置为 df 和 right 中的索引。连接的 DataFrame 将以 key 作为索引。

>>> join_psdf = psdf1.set_index('key').join(psdf2.set_index('key'))
>>> join_psdf.sort_values(by=join_psdf.columns) 
      A     B
key
K0   A0    B0
K1   A1    B1
K2   A2    B2
K3   A3  None

使用键列连接的另一个选项是使用 on 参数。 DataFrame.join 总是使用右索引,但我们可以使用 df 中的任何列。与 pandas 不同,此方法不会在结果中保留原始 DataFrame 的索引。

>>> join_psdf = psdf1.join(psdf2.set_index('key'), on='key')
>>> join_psdf.index
Int64Index([0, 1, 2, 3], dtype='int64')

相关用法


注:本文由纯净天空筛选整理自spark.apache.org大神的英文原创作品 pyspark.pandas.DataFrame.join。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。