2026a
# semijoin
半连接
函数库: DataFrames
# 语法
semijoin(df1, df2; on, makeunique=false, validate=(false, false), matchmissing=:error)
# 说明
semijoin(df1, df2; on, makeunique=false, validate=(false, false), matchmissing=:error)将两个表df1,df2连接起来,返回与 df2 中的键匹配的 df1 行的子集。 示例
# 示例
半连接
创建两个表格
using DataFrames
name = DataFrame(ID=[1, 2, 3], Name=["John Doe", "Jane Doe", "Joe Blogs"])
name = 3×2 DataFrame
Row │ ID Name
│ Int64 String
─────┼──────────────────
1 │ 1 John Doe
2 │ 2 Jane Doe
3 │ 3 Joe Blogs
job = DataFrame(ID=[1, 2, 4], Job=["Lawyer", "Doctor", "Farmer"])
job = 3×2 DataFrame
Row │ ID Job
│ Int64 String
─────┼───────────────
1 │ 1 Lawyer
2 │ 2 Doctor
3 │ 4 Farmer
将两个表格以ID进行连接,返回name中与job匹配的项
semijoin(name, job, on = :ID)
ans = 2×2 DataFrame
Row │ ID Name
│ Int64 String
─────┼─────────────────
1 │ 1 John Doe
2 │ 2 Jane Doe
再创建一个表格 job2
job2 = DataFrame(identifier=[1, 2, 4], Job=["Lawyer", "Doctor", "Farmer"])
job2 = 3×2 DataFrame
Row │ identifier Job
│ Int64 String
─────┼────────────────────
1 │ 1 Lawyer
2 │ 2 Doctor
3 │ 4 Farmer
将name与job2连接,选择ID与identifier相同项,返回name中所有的匹配项
semijoin(name, job2, on = [:ID => :identifier])
ans = 2×2 DataFrame
Row │ ID Name
│ Int64 String
─────┼─────────────────
1 │ 1 John Doe
2 │ 2 Jane Doe
# 输入参数
df1,df2-输入表格
输入参数,为表格
on-连接列名
用于连接 df1,df2,... 的列名。 如果将连接 df1,df2,... 的列具有不同的名称,则可以传递 left=>right 对。还允许对多个列执行连接,在这种情况下,可以传递列名或列名对的向量。on 是必需的参数。
validate(false, false)(默认)
是否检查作为 on 参数传递的列是否在每个输入数据框中定义了唯一键(根据 isequal)。 可以是元组或一对,第一个元素指示是否运行检查 df1,第二个元素指示 df2。 默认情况下不执行检查。
# 另请参阅
outerjoin | leftjoin | rightjoin | innerjoin | antijoin | crossjoin