在 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 具有 Symbolstring 类型的键。使用非 Symbolstring 键从 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 都假定列名不能是任意值。