首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >DataFrames.jl - leftjoin() -保留左侧数据帧索引位置

DataFrames.jl - leftjoin() -保留左侧数据帧索引位置
EN

Stack Overflow用户
提问于 2021-06-22 08:05:16
回答 1查看 44关注 0票数 1

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

代码语言:javascript
复制
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), x2 = fill(1.0,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)

对于输出:

代码语言:javascript
复制
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行。如果您愿意并希望保留其原始索引位置,并且在将df1df2 - df2插槽连接到df1匹配并在不匹配时插入缺失值,但仍保留输出的df1索引位置时,我将选择df1作为‘主’df:

代码语言:javascript
复制
Row │ x1     x2        x2_1      
     │ Int64  Float64?  Float64?  
─────┼────────────────────────────
   1 │     1       1.0        1.0
   2 │     2       1.0        missing
   3 │     3       1.0        1.0
   4 │     4       1.0        missing   
   5 │     5       1.0        1.0
   6 │     6       1.0        missing   
   7 │     7       1.0        1.0
   8 │     8       1.0        missing   
   9 │     9       1.0        1.0   
  10 │    10       1.0        missing

我怎么能做到这一点呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-06-22 14:58:31

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

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68076023

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档