朱莉娅(Julia)进入DataFrame的字典字典

时间:2019-01-13 11:49:54

标签: julia

我有一系列的字典,如下所示:

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中,而无需循环遍历每本词典并逐个键入关键字,这样我就具有一个如下所示的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 │

1 个答案:

答案 0 :(得分:1)

一种方法是

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)

即将每个Dict转换为DataFrame并将它们连接起来。

更详细的解释:

  • DataFrame(somedict)是一个构造函数调用,它从DataFrame创建一个Dict
  • DataFrame.(arrayofdicts):构造函数调用broadcasts处的点使得所有包含的Dict都转换为DataFrame s,并且我们得到{{ 1}} s。有关更多信息,请参见Julia文档中的Dot Syntax for Vectorizing Functions

  • DataFrame:我们现在将vcat(DataFrame.(arrayofdicts)...)的数组splat放入DataFrame函数中,该函数将它们垂直(行)连接。

    < / li>