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