Dataframe 从julia中大小不规则的字典创建数据帧?

Dataframe 从julia中大小不规则的字典创建数据帧?,dataframe,julia,Dataframe,Julia,我想知道,如何从大小不规则的字典创建数据帧 我创建了一个小片段来实现此操作: using DataFrames d = Dict(:a => rand(10), :b => rand(50), :c => rand(40)) df = DataFrame() for (key, values) in d x = string(key) val = d[key] df[!, x] = val end println(df) 但执行时会显示以下错误:

我想知道,如何从大小不规则的字典创建数据帧

我创建了一个小片段来实现此操作:

using DataFrames
d = Dict(:a => rand(10), :b => rand(50), :c => rand(40))
df = DataFrame()

for (key, values) in d 
    x = string(key)
    val = d[key]
    df[!, x] = val
end

println(df)
但执行时会显示以下错误:

ArgumentError: New columns must have the same length as old columns
请建议执行此类操作的正确语法


谢谢

这是最短的方法:

select(outerjoin(map(collect(d)) do v
                     d = DataFrame(v)
                     insertcols!(d, 1, :id => axes(d, 1))
                 end..., on=:id), Not(:id))
或者,您可以:

function helper(x, n)
    v = missings(eltype(x), n)
    v[axes(x, 1)] = x
    return v
end
n = maximum(length.(values(d)))
df = DataFrame()
for (c, v) in d
    df[!, c] = helper(v, n)
end
df

但它有点复杂和低级。

在数据框中,所有列都必须具有相同的行数。那么,您希望此操作的结果中有多少行:10(截断)、50(扩展)或200(重复到LCM)?如果你想要50(扩展),那么你想用什么值来填充缺少的值?@BogumiłKamiński感谢你的回答,我想用扩展。目标是检查
字典中的
,以确定值的最大数量,并为此设置数据帧的大小。而用
missing
填充缺失的值,我可以在后处理过程中使用这些值。