我正在使用DataFrames.jl的v7.0版本,并且想知道是否是连接两个DataFrame
的一种方法,以使两个DataFrame
共享的所有列都连接在一起,而这两个DataFrame
之间不通用的列被标记为丢失。
join()
函数似乎为DataFrame
创建了一个新密钥。
vcat
函数似乎无法串联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])
我想使用大DataFrame
来做到这一点,因此手动添加密钥不可行。
答案 0 :(得分:2)
我在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 │
由于它同时引用了df1
和df2
的列名,因此它应该使您免于手动命名键。