如何解决DataFrames.jl - leftjoin() - 保留左数据框索引定位
使用 leftjoin()
连接两个数据框 df1
和 df2
。
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 行。如果您愿意并希望保留其原始索引定位,并且在将 df1
到 df1
- df2
插槽加入 {df2
{1}} 匹配并在非匹配项上输入缺失值,但保留 df1 索引定位以供输出:
df1
无论如何我可以做到这一点?
解决方法
这是我们计划在未来添加的功能,请参阅https://github.com/JuliaData/DataFrames.jl/issues/2753。
现在,在我们添加所请求的功能之前,向您的左侧数据框中添加一列带有行 id 的列(在您的示例中已经有这样的列 :x1
)并在此列上对结果进行排序。>
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。