Julia --- 將JSON轉換成DataFrames

思路比較簡單,基本就是把list中的每個節點轉成DataFrames,然後再通過reduce函數合併成一個DataFrames

 

using JSON
using DataFrames


json_str = """
[{ "color": "red", "value": "#f00" }, { "color": "green", "value": "#0f0" },
 { "color": "blue", "value": "#00f" }, { "color": "cyan", "value": "#0ff" },
 { "color": "magenta", "value": "#f0f" }, { "color": "yellow", "value": "#ff0" },
 { "color": "black", "value": "#000" } ]
  """


#解析成Vector
a = JSON.Parser.parse(json_str)
# 7-element Array{Any,1}:
#  Dict{String,Any}("color"=>"red","value"=>"#f00")
#  Dict{String,Any}("color"=>"green","value"=>"#0f0")
#  Dict{String,Any}("color"=>"blue","value"=>"#00f")
#  Dict{String,Any}("color"=>"cyan","value"=>"#0ff")
#  Dict{String,Any}("color"=>"magenta","value"=>"#f0f")
#  Dict{String,Any}("color"=>"yellow","value"=>"#ff0")
#  Dict{String,Any}("color"=>"black","value"=>"#000")

# 以下幾種轉換方式
reduce(vcat, DataFrame.(a))
# 7×2 DataFrame
# │ Row │ color   │ value  │
# │     │ String  │ String │
# ├─────┼─────────┼────────┤
# │ 1   │ red     │ #f00   │
# │ 2   │ green   │ #0f0   │
# │ 3   │ blue    │ #00f   │
# │ 4   │ cyan    │ #0ff   │
# │ 5   │ magenta │ #f0f   │
# │ 6   │ yellow  │ #ff0   │
# │ 7   │ black   │ #000   │
vcat(DataFrame.(a)..., cols=:union)
# 7×2 DataFrame
# │ Row │ color   │ value  │
# │     │ String  │ String │
# ├─────┼─────────┼────────┤
# │ 1   │ red     │ #f00   │
# │ 2   │ green   │ #0f0   │
# │ 3   │ blue    │ #00f   │
# │ 4   │ cyan    │ #0ff   │
# │ 5   │ magenta │ #f0f   │
# │ 6   │ yellow  │ #ff0   │
# │ 7   │ black   │ #000   │
reduce(vcat, DataFrame.(a), cols=:union)
# 7×2 DataFrame
# │ Row │ color   │ value  │
# │     │ String  │ String │
# ├─────┼─────────┼────────┤
# │ 1   │ red     │ #f00   │
# │ 2   │ green   │ #0f0   │
# │ 3   │ blue    │ #00f   │
# │ 4   │ cyan    │ #0ff   │
# │ 5   │ magenta │ #f0f   │
# │ 6   │ yellow  │ #ff0   │
# │ 7   │ black   │ #000   │

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章