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

如何在Pandas中读取嵌套JSON文件的指定字段?

如何从大JSON Lines文件中读取指定嵌套字段到Pandas DataFrame

你的JSON文件属于JSON Lines格式(每行一个独立JSON对象),直接用read_json全量加载会引入大量不需要的字段,浪费内存。针对10万行的规模,推荐两种高效的处理方式:

方法一:逐行解析(内存友好,优先推荐)

通过逐行读取并解析JSON,只提取需要的字段,避免一次性加载全量数据到内存,适合大文件场景:

import pandas as pd
import json

def extract_target_fields(file_path):
    with open(file_path, 'r', encoding='utf-8') as file:
        for line in file:
            # 跳过空行
            if not line.strip():
                continue
            json_obj = json.loads(line)
            # 用get方法避免字段缺失引发KeyError
            yield {
                'A': json_obj.get('A'),
                'C_2': json_obj.get('Metadata', {}).get('Data', {}).get('C', {}).get('C_2')
            }

# 将生成器转换为DataFrame
result_df = pd.DataFrame(extract_target_fields('your_json_file.json'))

优势:

  • 内存占用极低,仅在处理当前行时加载数据
  • 用dict.get()处理字段缺失的情况,避免程序崩溃
  • 处理速度稳定,不会因文件过大出现内存溢出

方法二:全量加载后提取(适合内存充足场景)

如果你的机器内存足够容纳全量数据,可以先读取整个文件,再通过json_normalize展开嵌套字段后筛选目标列:

import pandas as pd
from pandas import json_normalize

# 读取JSON Lines文件,lines=True指定每行一个JSON对象
full_df = pd.read_json('your_json_file.json', lines=True)
# 展开Metadata下的嵌套字段
normalized_metadata = json_normalize(full_df['Metadata'])
# 拼接目标字段
result_df = pd.DataFrame({
    'A': full_df['A'],
    'C_2': normalized_metadata['Data.C.C_2']
})

注意事项:

  • 如果部分JSON行缺失目标字段,结果中会出现NaN,可后续用fillna()或dropna()处理
  • 确保文件编码为UTF-8,若有特殊编码需在open()或read_json()中指定

内容的提问来源于stack exchange,提问作者Setu Kumar Basak

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 03:35:26