在 Julia 中使用数字键从 Dict 构造 DataFrame
Constructing DataFrame from Dict with numeric keys in Julia
我想从具有整数列的 Julia Dict
构造一个 DataFrames.jl
数据框。我觉得这应该很简单:
using DataFrames
mydict = Dict(1 => 1, 2 => 2)
mydf = DataFrame(mydict)
但这不起作用,因为在这种情况下,DataFrame
期望 Dict
具有 Symbol
或 string
类型的键。使用非 Symbol
或 string
键从 Dict
构造 DataFrame
的简洁方法是什么?
这里有两个例子:
julia> DataFrame(Symbol.(keys(mydict)) .=> values(mydict))
1×2 DataFrame
Row │ 2 1
│ Int64 Int64
─────┼──────────────
1 │ 2 1
julia> DataFrame(Symbol(k) => v for (k, v) in pairs(mydict))
2×2 DataFrame
Row │ first second
│ Symbol Int64
─────┼────────────────
1 │ 2 2
2 │ 1 1
我们只接受字符串或 Symbol
值作为列名的原因是,一般来说,即使两个键在源字典中被认为是不同的,它们也可能具有字符串表示形式,从而导致歧义。
出于这个原因和用户安全,DataFrames.jl 和 Tables.jl 都假定列名不能是任意值。
我想从具有整数列的 Julia Dict
构造一个 DataFrames.jl
数据框。我觉得这应该很简单:
using DataFrames
mydict = Dict(1 => 1, 2 => 2)
mydf = DataFrame(mydict)
但这不起作用,因为在这种情况下,DataFrame
期望 Dict
具有 Symbol
或 string
类型的键。使用非 Symbol
或 string
键从 Dict
构造 DataFrame
的简洁方法是什么?
这里有两个例子:
julia> DataFrame(Symbol.(keys(mydict)) .=> values(mydict))
1×2 DataFrame
Row │ 2 1
│ Int64 Int64
─────┼──────────────
1 │ 2 1
julia> DataFrame(Symbol(k) => v for (k, v) in pairs(mydict))
2×2 DataFrame
Row │ first second
│ Symbol Int64
─────┼────────────────
1 │ 2 2
2 │ 1 1
我们只接受字符串或 Symbol
值作为列名的原因是,一般来说,即使两个键在源字典中被认为是不同的,它们也可能具有字符串表示形式,从而导致歧义。
出于这个原因和用户安全,DataFrames.jl 和 Tables.jl 都假定列名不能是任意值。