如何使用不匹配的列名执行垂直串联?
How to perform Vertical Concatenation with mismatched column names?
我有两个 df,如下所示,
df1
│ Row │ x1 │ x2 │ x3 │
│ │ Int64 │ Int64 │ Int64 │
├─────┼───────┼───────┼───────┤
│ 1 │ 8 │ 1 │ 4 │
│ 2 │ 4 │ 3 │ 1 │
│ 3 │ 7 │ 8 │ 1 │
df2
│ Row │ x1 │ x2 │ x3 │ x4 │
│ │ Int64 │ Int64 │ Int64 │ Int64 │
├─────┼───────┼───────┼───────┼───────┤
│ 1 │ 20 │ 14 │ 18 │ 100 │
│ 2 │ 13 │ 19 │ 17 │ 101 │
│ 3 │ 13 │ 10 │ 16 │ 102 │
当我执行 vcat 时它抛出 ArgumentError:参数 1 中缺少 x4 列
我理解这个错误是因为列名不匹配。有什么方法我仍然可以附加这些数据帧并将 missing
放在找不到的地方。
预期输出:
6×3 DataFrame
│ Row │ x1 │ x2 │ x3 │ x4 |
│ │ Int64 │ Int64 │ Int64 │ |
├─────┼───────┼───────┼───────┤───────┤
│ 1 │ 8 │ 1 │ 4 │missing|
│ 2 │ 4 │ 3 │ 1 │missing|
│ 3 │ 7 │ 8 │ 1 │missing|
│ 4 │ 20 │ 14 │ 18 │100 |
│ 5 │ 13 │ 19 │ 17 │101 |
│ 6 │ 13 │ 10 │ 16 │102 |
只需输入:
vcat(df1, df2, cols=:union)
您可以通过查看 vcat
的帮助找到此信息:
julia> ?vcat
...
Example
≡≡≡≡≡≡≡≡≡
julia> df1 = DataFrame(A=1:3, B=1:3);
...
julia> df3 = DataFrame(A=7:9, C=7:9);
...
julia> vcat(df1, df3, cols=:union)
6×3 DataFrame
│ Row │ A │ B │ C │
│ │ Int64 │ Int64? │ Int64? │
├─────┼───────┼─────────┼─────────┤
│ 1 │ 1 │ 1 │ missing │
│ 2 │ 2 │ 2 │ missing │
│ 3 │ 3 │ 3 │ missing │
│ 4 │ 7 │ missing │ 7 │
│ 5 │ 8 │ missing │ 8 │
│ 6 │ 9 │ missing │ 9 │
我有两个 df,如下所示,
df1
│ Row │ x1 │ x2 │ x3 │
│ │ Int64 │ Int64 │ Int64 │
├─────┼───────┼───────┼───────┤
│ 1 │ 8 │ 1 │ 4 │
│ 2 │ 4 │ 3 │ 1 │
│ 3 │ 7 │ 8 │ 1 │
df2
│ Row │ x1 │ x2 │ x3 │ x4 │
│ │ Int64 │ Int64 │ Int64 │ Int64 │
├─────┼───────┼───────┼───────┼───────┤
│ 1 │ 20 │ 14 │ 18 │ 100 │
│ 2 │ 13 │ 19 │ 17 │ 101 │
│ 3 │ 13 │ 10 │ 16 │ 102 │
当我执行 vcat 时它抛出 ArgumentError:参数 1 中缺少 x4 列
我理解这个错误是因为列名不匹配。有什么方法我仍然可以附加这些数据帧并将 missing
放在找不到的地方。
预期输出:
6×3 DataFrame
│ Row │ x1 │ x2 │ x3 │ x4 |
│ │ Int64 │ Int64 │ Int64 │ |
├─────┼───────┼───────┼───────┤───────┤
│ 1 │ 8 │ 1 │ 4 │missing|
│ 2 │ 4 │ 3 │ 1 │missing|
│ 3 │ 7 │ 8 │ 1 │missing|
│ 4 │ 20 │ 14 │ 18 │100 |
│ 5 │ 13 │ 19 │ 17 │101 |
│ 6 │ 13 │ 10 │ 16 │102 |
只需输入:
vcat(df1, df2, cols=:union)
您可以通过查看 vcat
的帮助找到此信息:
julia> ?vcat
...
Example
≡≡≡≡≡≡≡≡≡
julia> df1 = DataFrame(A=1:3, B=1:3);
...
julia> df3 = DataFrame(A=7:9, C=7:9);
...
julia> vcat(df1, df3, cols=:union)
6×3 DataFrame
│ Row │ A │ B │ C │
│ │ Int64 │ Int64? │ Int64? │
├─────┼───────┼─────────┼─────────┤
│ 1 │ 1 │ 1 │ missing │
│ 2 │ 2 │ 2 │ missing │
│ 3 │ 3 │ 3 │ missing │
│ 4 │ 7 │ missing │ 7 │
│ 5 │ 8 │ missing │ 8 │
│ 6 │ 9 │ missing │ 9 │