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

如何直接读取字典式列表结构的JSON为pandas DataFrame字典?

问题描述

我的JSON文件结构为字典类型,每个键对应一个由相似字典组成的列表,示例如下:

{"People":[{"FirstName":"Max","Surname":"Smith"},{"FirstName":"Jane","Surname":"Smart"}],
"Animals":[{"Breed":"Cat","Name":"WhiteSocks"},{"Breed":"Dog","Name":"Zeus"}]}

我当前使用以下代码将其转换为pandas DataFrame字典:

import pandas as pd
import json

# 读取JSON文件
jsonFile = 'exampleJson.json'
with open(jsonFile) as j:
    data = json.load(j)

# 转换为DataFrame字典
dfDict = {}
for dfName, dfContents in data.items():
    dfDict[dfName] = pd.DataFrame(dfContents)
    display(dfDict[dfName])

该代码能得到我需要的DataFrame字典,但处理大文件时效率较低。请问是否可以直接将JSON读取为DataFrame字典,而非先读取为JSON对象再转换?

解决方案

当然可以,你可以利用pandas.read_json直接读取文件,再通过字典推导式快速生成DataFrame字典,这样能避免先把整个JSON对象加载到内存,处理大文件时效率更高:

import pandas as pd

jsonFile = 'exampleJson.json'
# 直接读取JSON文件为DataFrame
raw_df = pd.read_json(jsonFile)
# 字典推导式将每个列转换为对应的DataFrame
dfDict = {col: pd.DataFrame(raw_df[col].tolist()) for col in raw_df.columns}

# 可选:遍历显示每个DataFrame
for name, df in dfDict.items():
    print(f"--- {name} ---")
    display(df)

效率提升原因

  • 跳过json.load()步骤,pandas的JSON解析器针对大文件做了优化,内存占用和解析速度都更优
  • 字典推导式比显式循环更高效,底层采用向量化操作逻辑

如果文件体量极大到无法一次性加载,还可以考虑分块读取,但针对你这种顶层为字典的结构,分块需要额外处理;若文件规模没有特别夸张,上述方法已足够显著提升效率。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 07:55:17