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