使用json_normalize将JSON转Dataframe时遇问题求解答
关于
json_normalize的弃用状态与长度问题解答 我来帮你理清这两个问题:
一、json_normalize并没有被弃用
别担心,json_normalize是pandas中处理嵌套JSON的核心工具,截至当前pandas 2.x版本,它仍然是官方正式支持的函数,完全没有被标记为弃用。可能你看到过一些用pd.DataFrame.from_dict处理JSON的例子,但那只适用于结构简单的场景,面对复杂的嵌套层级,json_normalize依然是最优选择。
二、3200字节JSON的长度相关问题排查
3200字节的JSON其实属于很小的体量,出现长度不匹配这类问题,几乎都是JSON结构或使用方式的问题,给你几个常见的排查方向:
- 嵌套结构不一致:如果你的JSON数组里,部分条目有嵌套字段、部分没有,或者嵌套层级不统一,
json_normalize会自动填充缺失值,但有时候会让你误以为是“长度问题”。这种情况可以明确指定record_path参数来定位要展开的数组,用meta保留顶层的关联字段,示例代码:import pandas as pd from pandas import json_normalize import json parsed_data = json.loads(jsonStr) # 假设嵌套数组在'results'字段下,同时保留顶层的'id'和'category'字段 df = json_normalize(parsed_data['results'], meta=['id', 'category']) - JSON格式有语法错误:哪怕是一个缺失的引号、不匹配的括号,都可能导致解析后的数据结构异常,进而在归一化时出现奇怪的长度问题。先验证JSON的有效性:
import json try: parsed_data = json.loads(jsonStr) print("JSON格式有效") except json.JSONDecodeError as e: print(f"JSON格式错误,位置在{e.pos}: {e.msg}") - 顶层数据类型误用:如果你的JSON顶层是单个对象(不是数组),直接传入
json_normalize会生成一行多列的DataFrame,看起来像是“长度不对”。这时候只要把单个对象用列表包裹起来就行:parsed_data = json.loads(jsonStr) df = json_normalize([parsed_data]) # 用[]包裹单个对象
内容的提问来源于stack exchange,提问作者Adrian Ezequiel Martinez
相关产品推荐
相关产品推荐

