首页 > 解决方案 > 在 Julia 中加入 DataFrame

问题描述

我正在使用 DataFrames.jl 的 v7.0 并且想知道这是否是一种连接两个DataFrames 的方法,这样两个DataFrames 共有的所有列都连接在一起,而两个DataFrames 之间不共有的列被标记为缺失。

join()功能似乎为DataFrame. 如果没有完全相同的列名,该vcat函数似乎无法连接s。DataFrame

我在下面的意思的一个例子。

我想结合

df1 = DataFrame(
    A = [1, 1000, 10000, 100000],
    B = [1,2,3,4],
    D = ["N", "M", "I", "J"])
df2 = DataFrame(
    A = [1,2],
    B = repeat(1:2, inner=1),
    C = ["hi","CE"])

以某种方式让我得到

df3 = DataFrame(
    A = [1,1000,10000,100000, 2],
    B = [1,2,3,4,2],
    C = ["hi", missing, missing, missing, "CE"],
    D = ["N", "M", "I", "J", missing]) 

我想用大的 s 来做这个,DataFrame所以手动添加键是不可行的。

标签: dataframejoinconcatenationjulia

解决方案


我在 Julia v0.6.2 和 DataFrames.jl v0.11.7 中做到了这一点:

join(df1, df2, kind = :outer, on = intersect(names(df1), names(df2)))

我的输出:

5×4 DataFrames.DataFrame
│ Row │ A      │ B │ D       │ C       │
├─────┼────────┼───┼─────────┼─────────┤
│ 1   │ 1      │ 1 │ N       │ hi      │
│ 2   │ 1000   │ 2 │ M       │ missing │
│ 3   │ 10000  │ 3 │ I       │ missing │
│ 4   │ 100000 │ 4 │ J       │ missing │
│ 5   │ 2      │ 2 │ missing │ CE      │

由于它同时引用 和 的列名df1df2它应该免除您手动命名键的麻烦。


推荐阅读