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

如何在Python中高效地从JSON文件创建DataFrame?

高效将JSON转换为Pandas DataFrame的方法

嘿,我太懂你这种循环逐行追加导致速度拉胯的痛苦了——这种写法在数据量小的时候还能凑活,数据一大简直是灾难。其实pandas本身就提供了专门优化过的工具,完全能替代这种低效的手动循环,而且代码还更优雅。

方法1:直接用pd.read_json()(最适合简单结构JSON)

如果你的JSON文件是数组型结构(每个元素对应DataFrame的一行),那直接用pandas的read_json()就能一步完成转换,这是效率最高的方式,因为它是底层矢量化实现的,比Python循环快几个量级。

示例代码:

import pandas as pd

# 直接读取JSON文件并转换为DataFrame
df = pd.read_json("your_data.json")

方法2:用pd.json_normalize()处理嵌套JSON

如果你的JSON是嵌套结构(比如字典里套字典/列表),手动循环提取字段不仅麻烦还慢,这时候json_normalize()就是救星——它能自动把嵌套的层级结构平铺成规整的DataFrame列。

示例代码:

import pandas as pd
import json

# 先读取JSON文件为Python对象(列表/字典)
with open("your_nested_data.json", "r") as f:
    raw_json = json.load(f)

# 平铺嵌套结构生成DataFrame
df = pd.json_normalize(raw_json)

举个实际例子,假设你的嵌套JSON数据是这样的:

[
    {"user_id": 101, "username": "jane_doe", "profile": {"age": 28, "location": "Paris"}},
    {"user_id": 102, "username": "john_smith", "profile": {"age": 32, "location": "Tokyo"}}
]

用json_normalize()处理后,会得到包含user_id、username、profile.age、profile.location列的DataFrame,完美解决嵌套数据的提取问题。

为什么你的循环方法这么慢?

你之前用空DataFrame+逐行追加的方式,每次df.append()(或pd.concat)都会创建一个新的DataFrame对象,频繁的内存分配和数据拷贝会随着数据量的增长急剧拖慢速度——这其实是pandas使用中的典型反模式,一定要避免。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 09:10:11