微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

DataFrames.jl - leftjoin() - 保留左数据框索引定位

如何解决DataFrames.jl - leftjoin() - 保留左数据框索引定位

使用 leftjoin() 连接两个数据框 df1df2

df1 = DataFrame(x1 = collect(1:1:10),x2 = fill(1.0,10))

Row │ x1     x2      
     │ Int64  Float64 
─────┼────────────────
   1 │     1      1.0
   2 │     2      1.0
   3 │     3      1.0
   4 │     4      1.0
   5 │     5      1.0
   6 │     6      1.0
   7 │     7      1.0
   8 │     8      1.0
   9 │     9      1.0
  10 │    10      1.0

df2 = DataFrame(x1 = collect(1:2:10),5))

Row │ x1     x2      
     │ Int64  Float64 
─────┼────────────────
   1 │     1      1.0
   2 │     3      1.0
   3 │     5      1.0
   4 │     7      1.0
   5 │     9      1.0

out_df = leftjoin(df1,df2,on = :x1,makeunique=true)

用于输出

Row │ x1     x2        x2_1      
     │ Int64  Float64?  Float64?  
─────┼────────────────────────────
   1 │     1       1.0        1.0
   2 │     3       1.0        1.0
   3 │     5       1.0        1.0
   4 │     7       1.0        1.0
   5 │     9       1.0        1.0
   6 │     2       1.0  missing   
   7 │     4       1.0  missing   
   8 │     6       1.0  missing   
   9 │     8       1.0  missing   
  10 │    10       1.0  missing

我的问题是 df1 为 10 行,df2 为 5 行。如果您愿意并希望保留其原始索引定位,并且在将 df1df1 - df2 插槽加入 {df2 {1}} 匹配并在非匹配项上输入缺失值,但保留 df1 索引定位以供输出

df1

无论如何我可以做到这一点?

解决方法

这是我们计划在未来添加的功能,请参阅https://github.com/JuliaData/DataFrames.jl/issues/2753

现在,在我们添加所请求的功能之前,向您的左侧数据框中添加一列带有行 id 的列(在您的示例中已经有这样的列 :x1)并在此列上对结果进行排序。>

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。