嵌套JSON转pandas DataFrame结果异常如何解决
问题根因
你的代码存在两个问题,核心问题是json_normalize的传参错误:
- 你传入的是整个顶层
myjson字典,但真正需要拆成表格行的所有记录,都存储在字典的data键对应的列表里 - 直接对顶层字典做归一化,最终只会输出1行1列的结果:列名为
data,单元格里存的是包含3条记录的完整列表,不会把列表内字典的ID、name、完成度等字段拆成独立列,完全达不到结构化表格的效果 - 冗余代码:
json_normalize执行后本身返回的就是DataFrame对象,不需要再额外套一层pd.DataFrame()做转换
修正方案
旧版pandas兼容写法
通过record_path参数明确告知json_normalize要展开的数组路径:
import pandas as pd from pandas.io.json import json_normalize df = json_normalize(myjson, record_path='data') df
pandas 1.0+ 推荐写法
新版本pandas直接提供了顶层json_normalize接口,也可以直接取出data字段的列表传入,逻辑更直观:
import pandas as pd df = pd.json_normalize(myjson['data']) df
运行修正后的代码,会得到3行9列的标准DataFrame,每一列对应JSON里的单个字段,每一行对应一条项目记录,和预期的结构化表格效果一致。
内容的提问来源于stack exchange,提问作者rra
相关产品推荐
相关产品推荐

