You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python Pandas读取JSON文件时嵌套字段数据显示不全问题

JSON字段读取部分显示NaN的原因及解决办法

可能的原因

  • JSON结构不一致:部分行的AccessLevels字段本身缺失,或字段的嵌套结构(比如有的是数组、有的是字典、有的是字符串)不统一,pandas无法统一解析,就会填充NaN。
  • pandas读取参数不匹配:使用pd.read_json()时,默认的orient参数不适合你的嵌套JSON结构,导致嵌套字段解析失败,出现NaN。
  • 复杂数据类型无法统一:AccessLevels包含混合类型的子数据(比如同时有字典、数组、空值),pandas无法将其转换为统一的Series元素类型,解析失败的条目会被设为NaN。

排查与解决步骤

1. 先确认原始JSON的结构问题

用原生json模块逐行检查数据,确认AccessLevels的存在情况和结构:

import json

has_access = 0
missing_access = 0
with open('your_json_file.json', 'r', encoding='utf-8') as f:
    for idx, line in enumerate(f):
        try:
            data = json.loads(line)
            if 'AccessLevels' in data:
                has_access += 1
                # 打印前5条的结构做参考
                if has_access <= 5:
                    print(f"第{idx+1}行AccessLevels结构: {data['AccessLevels']}")
            else:
                missing_access += 1
        except json.JSONDecodeError:
            print(f"第{idx+1}行JSON格式错误")

print(f"总计:{has_access}行含AccessLevels,{missing_access}行缺失")

2. 用pd.json_normalize()解析嵌套结构

这是处理嵌套JSON的最优方案,能自动展开嵌套字段,避免解析失败导致的NaN:

import pandas as pd
import json

# 读取所有JSON数据
with open('your_json_file.json', 'r', encoding='utf-8') as f:
    raw_data = [json.loads(line) for line in f]

# 如果AccessLevels是数组类型,用record_path展开成多行
df = pd.json_normalize(raw_data, record_path=['AccessLevels'], meta=['id', 'name'], errors='ignore')

# 如果AccessLevels是单个字典,直接解析即可
# df = pd.json_normalize(raw_data, errors='ignore')
  • record_path指定要展开的嵌套数组字段
  • meta指定需要保留的顶层字段(如id、名称等)
  • errors='ignore'跳过解析失败的条目,避免崩溃

3. 处理确实缺失的字段

如果部分行确实没有AccessLevels,可以选择过滤或填充:

# 过滤掉缺失AccessLevels的行
filtered_df = df.dropna(subset=['AccessLevels'])

# 或者填充默认值(根据你的业务需求设置)
df['AccessLevels'] = df['AccessLevels'].fillna({"level": "guest", "permission": "read"})

4. 检查是否是显示问题

如果数据实际存在但被截断显示,调整pandas的显示设置:

# 显示完整的单元格内容,不截断
pd.set_option('display.max_colwidth', None)
# 显示所有行
pd.set_option('display.max_rows', None)

内容的提问来源于stack exchange,提问作者geb

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.14 11:08:22