如何在Julia中便捷读取嵌套JSON为DataFrame?
将嵌套JSON转为Julia DataFrame的便捷方法
针对你遇到的问题,这里提供两种对应Python pd.json_normalize 的便捷解决方案:
1. 处理普通字典向量(无嵌套或浅嵌套)
如果你的json_r["data"]是标准的字典向量,只是直接转DataFrame失败,可以先将每个字典转换为NamedTuple,再构造DataFrame:
using DataFrames, JSON, HTTP r = HTTP.get(url_instrument_list, headers) json_r = JSON.parse(String(r.body)) data = json_r["data"] # 将每个Dict转换为NamedTuple,再生成DataFrame df_instruments = DataFrame(NamedTuple.(data))
这种方法会自动将字典的键作为列名,缺失的键对应位置填充missing。
2. 处理嵌套JSON结构(对应pd.json_normalize)
如果JSON存在多层嵌套结构,推荐使用JSONTables.jl包,它能自动展开嵌套的字典/数组,实现类似pd.json_normalize的功能:
步骤1:安装依赖包
using Pkg Pkg.add(["JSONTables", "DataFrames", "HTTP", "JSON"])
步骤2:读取并转换
using DataFrames, JSON, HTTP, JSONTables r = HTTP.get(url_instrument_list, headers) json_r = JSON.parse(String(r.body)) data = json_r["data"] # 自动解析嵌套JSON并转为DataFrame df_instruments = DataFrame(jsontable(data))
原代码失败原因
你得到slots、keys、vals列,大概率是因为json_r["data"]中的元素不是标准的Dict类型,或者Julia的DataFrame构造函数对异构字典向量的解析方式与预期不符。通过转换为NamedTuple或使用JSONTables可以规避这个问题。
内容的提问来源于stack exchange,提问作者Marius Zoican
相关产品推荐
相关产品推荐

