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
填充缺失的值,我可以在后处理过程中使用这些值。