Julia 是否使用预先分配的内存向数据帧添加行?
假设我有一个预大小的数据帧,我想给每一行赋值。(前推!和附加!退出游戏) 上面的代码显示了如何对每个迭代行逐个单元格地执行该操作 是否有一种解决方案可以在每次迭代中一次添加整个行? 因为Julia 是否使用预先分配的内存向数据帧添加行?,julia,Julia,假设我有一个预大小的数据帧,我想给每一行赋值。(前推!和附加!退出游戏) 上面的代码显示了如何对每个迭代行逐个单元格地执行该操作 是否有一种解决方案可以在每次迭代中一次添加整个行? 因为 引发错误的类型异常。要访问行,语法是[row,:],而不仅仅是row 此外,您还需要首先将该行转换为数据帧 for n in 1:10 df[n,:] = DataFrame([n "random text2"]) end 您可以使用自己的函数轻松设置行: julia> function set
引发错误的类型异常。要访问行,语法是
[row,:]
,而不仅仅是row
此外,您还需要首先将该行转换为数据帧
for n in 1:10
df[n,:] = DataFrame([n "random text2"])
end
您可以使用自己的函数轻松设置行:
julia> function setrow!(df, rowi, val)
for j in eachindex(val)
df[rowi, j] = val[j]
end
df
end
setrow! (generic function with 1 method)
julia> setrow!(df, 1, [1, "a"])
10×2 DataFrames.DataFrame
│ Row │ id │ value │
├─────┼─────────────────┼──────────┤
│ 1 │ 1 │ "a" │
│ 2 │ 140525709817424 │ "#undef" │
│ 3 │ 140525709817488 │ "#undef" │
│ 4 │ 140525709817072 │ "#undef" │
│ 5 │ 140525709817104 │ "#undef" │
│ 6 │ 140525709817136 │ "#undef" │
│ 7 │ 140525709817168 │ "#undef" │
│ 8 │ 140525709817200 │ "#undef" │
│ 9 │ 140525709817232 │ "#undef" │
│ 10 │ 0 │ "#undef" │
理想情况下,您可以使用广播分配语法:
df[2, :] .= [2, "b"]
但这似乎没有实现(可能是出于好的原因,我不确定)。使用此解决方案时,需要注意数据帧中的列顺序。
julia> function setrow!(df, rowi, val)
for j in eachindex(val)
df[rowi, j] = val[j]
end
df
end
setrow! (generic function with 1 method)
julia> setrow!(df, 1, [1, "a"])
10×2 DataFrames.DataFrame
│ Row │ id │ value │
├─────┼─────────────────┼──────────┤
│ 1 │ 1 │ "a" │
│ 2 │ 140525709817424 │ "#undef" │
│ 3 │ 140525709817488 │ "#undef" │
│ 4 │ 140525709817072 │ "#undef" │
│ 5 │ 140525709817104 │ "#undef" │
│ 6 │ 140525709817136 │ "#undef" │
│ 7 │ 140525709817168 │ "#undef" │
│ 8 │ 140525709817200 │ "#undef" │
│ 9 │ 140525709817232 │ "#undef" │
│ 10 │ 0 │ "#undef" │
df[2, :] .= [2, "b"]