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   │

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

October-

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值