1.36233,"time"=>"2014-0-6ren">
gpt4 book ai didi

julia - 将字典数组一次性放入 Julia 中的 DataFrame

转载 作者:行者123 更新时间:2023-12-02 00:56:05 27 4
gpt4 key购买 nike

我有一系列字典如下:

julia> data  
2-element Array{Any,1}:
Dict{String,Any}("ratio1"=>1.36233,"time"=>"2014-06-19T15:47:40.000000Z","ratio2"=>1.36243)
Dict{String,Any}("ratio1"=>1.3623,"time"=>"2014-06-19T15:48:00.000000Z","ratio2"=>1.36245)

如何一次性将其弹出到 DataFrame 没有 逐个循环遍历每个字典和键,以便我有一个如下所示的数据框:
2×3 DataFrame
│ Row │ ratio1 │ ratio2 │ time │
│ │ Float64 │ Float64 │ String │
├─────┼─────────┼─────────┼─────────────────────────────┤
│ 1 │ 1.36233 │ 1.36243 │ 2014-06-19T15:47:40.000000Z │
│ 2 │ 1.3623 │ 1.36245 │ 2014-06-19T15:48:00.000000Z │

最佳答案

一种方法是

julia> vcat(DataFrame.(data)...)
2×3 DataFrame
│ Row │ ratio1 │ ratio2 │ time │
│ │ Float64 │ Float64 │ String │
├─────┼─────────┼─────────┼─────────────────────────────┤
│ 1 │ 1.36233 │ 1.36243 │ 2014-06-19T15:47:40.000000Z │
│ 2 │ 1.3623 │ 1.36245 │ 2014-06-19T15:48:00.000000Z │

julia> @btime vcat(DataFrame.($data)...)
31.146 μs (157 allocations: 12.19 KiB)

即转换每个 DictDataFrame并将它们连接起来。

更详细的解释:
  • DataFrame(somedict)是一个构造函数调用,它创建一个 DataFrame来自 Dict
  • DataFrame.(arrayofdicts) :这里的点broadcasts构造函数调用使得所有包含 Dict s 转换为 DataFrame s,我们得到一个数组 DataFrame s。见 Dot Syntax for Vectorizing Functions在 Julia 文档中了解更多信息。
  • vcat(DataFrame.(arrayofdicts)...) : 我们现在splat我们的数组 DataFrame s进入vcat函数,将它们垂直连接(行)。
  • 关于julia - 将字典数组一次性放入 Julia 中的 DataFrame,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54168574/

    27 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com