gpt4 book ai didi

dataframe - 将 JSON 数组读入类似 Julia DataFrame 的类型

转载 作者:行者123 更新时间:2023-12-04 04:20:35 25 4
gpt4 key购买 nike

给定一个 JSON 文件,JSON 包很乐意解析它。但如果我想要它作为 DataFrame (或任何其他列式数据结构),什么是获得它的好方法?

目前,例如,我有:

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" } ]
"""

function jsontodf(a)
ka = union([keys(r) for r in a]...)
df = DataFrame(;Dict(Symbol(k)=>get.(a,k,NA) for k in ka)...)
return df
end

a = JSON.Parser.parse(json_str)
jsontodf(a)

这导致:
7×2 DataFrames.DataFrame
│ Row │ color │ value │
├─────┼───────────┼────────┤
│ 1 │ "red" │ "#f00" │
│ 2 │ "green" │ "#0f0" │
│ 3 │ "blue" │ "#00f" │
│ 4 │ "cyan" │ "#0ff" │
│ 5 │ "magenta" │ "#f0f" │
│ 6 │ "yellow" │ "#ff0" │
│ 7 │ "black" │ "#000" │

并且还使用 NA 处理一些缺失的字段。有什么更干净/更快的(Julia v0.6+)?

最佳答案

我已经挖掘出这个老问题,现在我们有一个更好的解决方案,从 DataFrames.jl 0.18.0 开始。

如果 JSON 中的所有条目都具有相同的字段,您可以编写:

reduce(vcat, DataFrame.(a))

如果您必须处理每个字典中不同字段的可能性,请编写:
vcat(DataFrame.(a)..., cols=:union)

如果 a,这可能会有点问题有很多条目,因为它会飞溅。我刚刚提交了一个 PR,这样你也可以写:
reduce(vcat, DataFrame.(a), cols=:union)

在不远的将来。

关于dataframe - 将 JSON 数组读入类似 Julia DataFrame 的类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46143997/

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