使用给定联接表达式与其他 DataFrame 联接。
Syntax
join(other: "DataFrame", on: Optional[Union[str, List[str], Column, List[Column]]] = None, how: Optional[str] = None)
参数
| 参数 | 类型 | 说明 |
|---|---|---|
other |
DataFrame | 联接的右侧。 |
on |
str、list 或 Column,可选 | 联接列名称、列名列表、联接表达式(列)或列列表的字符串。 如果 on 字符串或字符串列表指示联接列的名称,则列(s)必须存在于两侧,这将执行等式联接。 |
how |
str,可选 | default inner. 必须是以下项之一:inner、cross、outerfullfullouterfull_outerleftleftouterleft_outerrightrightouterright_outersemileftsemi、 left_semiantileftanti 和。left_anti |
退货
DataFrame:联接的数据帧。
示例
import pyspark.sql.functions as sf
from pyspark.sql import Row
df = spark.createDataFrame([Row(name="Alice", age=2), Row(name="Bob", age=5)])
df2 = spark.createDataFrame([Row(name="Tom", height=80), Row(name="Bob", height=85)])
df.join(df2, "name").show()
# +----+---+------+
# |name|age|height|
# +----+---+------+
# | Bob| 5| 85|
# +----+---+------+
joined = df.join(df2, df.name == df2.name, "outer").sort(sf.desc(df.name))
joined.show()
# +-----+----+----+------+
# | name| age|name|height|
# +-----+----+----+------+
# | Bob| 5| Bob| 85|
# |Alice| 2|NULL| NULL|
# | NULL|NULL| Tom| 80|
# +-----+----+----+------+
df.alias("a").join(
df.alias("b"), sf.col("a.name") == sf.col("b.name"), "outer"
).sort(sf.desc("a.name")).select("a.name", "b.age").show()
# +-----+---+
# | name|age|
# +-----+---+
# | Bob| 5|
# |Alice| 2|
# +-----+---+