Dataframe 在Julia中,如果某些列不同,如何组合多个数据帧?

Dataframe 在Julia中,如果某些列不同,如何组合多个数据帧?,dataframe,julia,Dataframe,Julia,我有一些无序的数据帧,它们具有相似但不完全相等的列键。例如: DataFrame. Columns Dataframe 1: A, B, C Dataframe 2: A, B, C Dataframe 3: A, B, C, D Dataframe 4: A, C, D 我想将它们堆叠/连接/附加。我不关心如何为缺少给定列的数据帧填充缺少的数据 也就是说,我想要一个数据帧: DataFrame combined: A, B, C, D 如果要进行矢量连接,请执行以下操作: julia&

我有一些无序的数据帧,它们具有相似但不完全相等的列键。例如:

DataFrame.   Columns
Dataframe 1: A, B, C
Dataframe 2: A, B, C
Dataframe 3: A, B, C, D
Dataframe 4: A, C, D
我想将它们堆叠/连接/附加。我不关心如何为缺少给定列的数据帧填充缺少的数据

也就是说,我想要一个数据帧:

DataFrame combined: A, B, C, D

如果要进行矢量连接,请执行以下操作:

julia> dfs = [DataFrame(permutedims(1:n), :auto) for n in 1:5]
5-element Vector{DataFrame}:
 1×1 DataFrame
 Row │ x1
     │ Int64
─────┼───────
   1 │     1
 1×2 DataFrame
 Row │ x1     x2
     │ Int64  Int64
─────┼──────────────
   1 │     1      2
 1×3 DataFrame
 Row │ x1     x2     x3
     │ Int64  Int64  Int64
─────┼─────────────────────
   1 │     1      2      3
 1×4 DataFrame
 Row │ x1     x2     x3     x4
     │ Int64  Int64  Int64  Int64
─────┼────────────────────────────
   1 │     1      2      3      4
 1×5 DataFrame
 Row │ x1     x2     x3     x4     x5
     │ Int64  Int64  Int64  Int64  Int64
─────┼───────────────────────────────────
   1 │     1      2      3      4      5

julia> vcat(dfs[1], dfs[2], dfs[3], dfs[4], dfs[5], cols=:union)
5×5 DataFrame
 Row │ x1     x2       x3       x4       x5
     │ Int64  Int64?   Int64?   Int64?   Int64?
─────┼───────────────────────────────────────────
   1 │     1  missing  missing  missing  missing
   2 │     1        2  missing  missing  missing
   3 │     1        2        3  missing  missing
   4 │     1        2        3        4  missing
   5 │     1        2        3        4        5
如果要追加,请执行以下操作:

julia> dfs = [DataFrame(permutedims(1:n), :auto) for n in 1:5]
5-element Vector{DataFrame}:
 1×1 DataFrame
 Row │ x1
     │ Int64
─────┼───────
   1 │     1
 1×2 DataFrame
 Row │ x1     x2
     │ Int64  Int64
─────┼──────────────
   1 │     1      2
 1×3 DataFrame
 Row │ x1     x2     x3
     │ Int64  Int64  Int64
─────┼─────────────────────
   1 │     1      2      3
 1×4 DataFrame
 Row │ x1     x2     x3     x4
     │ Int64  Int64  Int64  Int64
─────┼────────────────────────────
   1 │     1      2      3      4
 1×5 DataFrame
 Row │ x1     x2     x3     x4     x5
     │ Int64  Int64  Int64  Int64  Int64
─────┼───────────────────────────────────
   1 │     1      2      3      4      5

julia> append!(dfs[1], dfs[2], cols=:union)
2×2 DataFrame
 Row │ x1     x2
     │ Int64  Int64?
─────┼────────────────
   1 │     1  missing
   2 │     1        2

julia> append!(dfs[1], dfs[3], cols=:union)
3×3 DataFrame
 Row │ x1     x2       x3
     │ Int64  Int64?   Int64?
─────┼─────────────────────────
   1 │     1  missing  missing
   2 │     1        2  missing
   3 │     1        2        3

julia> append!(dfs[1], dfs[4], cols=:union)
4×4 DataFrame
 Row │ x1     x2       x3       x4
     │ Int64  Int64?   Int64?   Int64?
─────┼──────────────────────────────────
   1 │     1  missing  missing  missing
   2 │     1        2  missing  missing
   3 │     1        2        3  missing
   4 │     1        2        3        4

julia> append!(dfs[1], dfs[5], cols=:union)
5×5 DataFrame
 Row │ x1     x2       x3       x4       x5
     │ Int64  Int64?   Int64?   Int64?   Int64?
─────┼───────────────────────────────────────────
   1 │     1  missing  missing  missing  missing
   2 │     1        2  missing  missing  missing
   3 │     1        2        3  missing  missing
   4 │     1        2        3        4  missing
   5 │     1        2        3        4        5

julia> dfs[1]
5×5 DataFrame
 Row │ x1     x2       x3       x4       x5
     │ Int64  Int64?   Int64?   Int64?   Int64?
─────┼───────────────────────────────────────────
   1 │     1  missing  missing  missing  missing
   2 │     1        2  missing  missing  missing
   3 │     1        2        3  missing  missing
   4 │     1        2        3        4  missing
   5 │     1        2        3        4        5