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


Python PySpark DataFrame intersectAll方法用法及代码示例


PySpark DataFrame 的 intersectAll(~) 方法返回一个新的 PySpark DataFrame,其中的行也存在于其他 PySpark DataFrame 中。与 intersect(~) 不同,intersectAll(~) 方法保留重复项。

注意

intersectAll(~) 方法与 SQL 中的 INTERSECT ALL 语句相同。

参数

1.other | PySpark 数据帧

另一个PySpark 数据帧。

返回值

一个新的 PySpark 数据帧。

例子

考虑以下PySpark DataFrame:

df = spark.createDataFrame([("Alex", 20), ("Alex", 20), ("Bob", 30), ("Cathy", 40)], ["name", "age"])
df.show()



+-----+---+
| name|age|
+-----+---+
| Alex| 20|
| Alex| 20|
|  Bob| 30|
|Cathy| 40|
+-----+---+

假设另一个PySpark DataFrame 是:

df_other = spark.createDataFrame([("Alex", 20), ("Alex", 20), ("David", 80), ("Eric", 80)], ["name", "age"])
df_other.show()



+-----+---+
| name|age|
+-----+---+
| Alex| 20|
| Alex| 20|
|David| 80|
| Eric| 80|
+-----+---+

在此,请注意以下事项:

  • 唯一匹配的行是 Alex 的行

  • Alex 的行在 dfdf_other 中出现两次

获取其他 PySpark DataFrame 中也存在的行,同时保留重复项

要获取其他 PySpark DataFrame 中也存在的行,同时保留重复项:

df_res = df.intersectAll(df_other)
df_res.show()



+----+---+
|name|age|
+----+---+
|Alex| 20|
|Alex| 20|
+----+---+

请注意以下事项:

  • Alex 的行重复,因为 Alex 的行在 dfdf_other 中分别出现两次。

  • 如果 Alex 的行仅在一个 DataFrame 中出现一次,但在另一个 DataFrame 中出现多次,则 Alex 的行将仅在生成的 DataFrame 中包含一次。

  • 如果您只想包含一次重复行,请改用 intersect(~) 方法。

相关用法


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