【问题标题】:DataFrames.jl - leftjoin() - retain left dataframe index positioningDataFrames.jl - leftjoin() - 保留左侧数据框索引定位
【发布时间】:2021-06-22 00:05:15
【问题描述】:

使用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), 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)

输出:

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 作为“主” df,如果您愿意并希望保留其原始索引位置,并且当将 df1 加入 df2 - df2 插槽到 df1 匹配并输入缺失值在不匹配但保留 df1 索引定位以进行输出:

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

反正我可以做到这一点吗?

【问题讨论】:

    标签: julia dataframes.jl


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 2020-12-13
      • 2020-06-02
      • 2020-07-10
      • 1970-01-01
      • 1970-01-01
      • 2013-12-03
      • 2014-09-01
      • 2017-09-21
      • 2017-10-03
      相关资源
      最近更新 更多