将字典中的键值对分配给 DataFrame 在 Julia 1.1 中不起作用
Assigning a key-value pair from a dict to a DataDrame is not working in Julia 1.1
我正在尝试从 Julia 1.1 中的 Dict
构建 DataFrame
。字典中的键是列名,值是包含列应该具有的值的向量。我认为它会像
一样简单
df = DataFrame()
for (key,value) in datadict
df[key] = value
end
但这会引发 ERROR: LoadError: MethodError: no method matching setindex!(::DataFrame, ::Array{String,1}, ::String)
。我没有直接使用变量 key
,而是尝试传递一个符号 :key
作为列名,如 df[:key] = value
中那样,它删除了错误消息但只插入了第一个键值-将数据框作为列配对,使用 key
作为列名:
10×1 DataFrame
│ Row │ key │
│ │ String │
├─────┼────────────┤
│ 1 │ 2019-03-04 │
│ 2 │ 2019-03-05 │
│ 3 │ 2019-03-06 │
│ 4 │ 2019-03-07 │
│ 5 │ 2019-03-08 │
│ 6 │ 2019-03-09 │
│ 7 │ 2019-03-10 │
│ 8 │ 2019-03-11 │
│ 9 │ 2019-03-12 │
│ 10 │ 2019-03-13 │
这显然不是我想要的。我在这里做错了什么?
此代码应该有效:
using DataFrames
datadict = Dict(1 => ["2019-03-04", "2019-03-04"], 2 => ["1996-26-12", "1996-25-12"])
df = DataFrame()
for (key, value) in datadict
df[Symbol(key)] = value
end
您必须使用 Symbol(key)
创建密钥符号。
我正在尝试从 Julia 1.1 中的 Dict
构建 DataFrame
。字典中的键是列名,值是包含列应该具有的值的向量。我认为它会像
df = DataFrame()
for (key,value) in datadict
df[key] = value
end
但这会引发 ERROR: LoadError: MethodError: no method matching setindex!(::DataFrame, ::Array{String,1}, ::String)
。我没有直接使用变量 key
,而是尝试传递一个符号 :key
作为列名,如 df[:key] = value
中那样,它删除了错误消息但只插入了第一个键值-将数据框作为列配对,使用 key
作为列名:
10×1 DataFrame
│ Row │ key │
│ │ String │
├─────┼────────────┤
│ 1 │ 2019-03-04 │
│ 2 │ 2019-03-05 │
│ 3 │ 2019-03-06 │
│ 4 │ 2019-03-07 │
│ 5 │ 2019-03-08 │
│ 6 │ 2019-03-09 │
│ 7 │ 2019-03-10 │
│ 8 │ 2019-03-11 │
│ 9 │ 2019-03-12 │
│ 10 │ 2019-03-13 │
这显然不是我想要的。我在这里做错了什么?
此代码应该有效:
using DataFrames
datadict = Dict(1 => ["2019-03-04", "2019-03-04"], 2 => ["1996-26-12", "1996-25-12"])
df = DataFrame()
for (key, value) in datadict
df[Symbol(key)] = value
end
您必须使用 Symbol(key)
创建密钥符号。