json_normalize 是 pandas 用于处理嵌套 json 数据的工具。1. 理解嵌套 json 结构,如包含字典和列表的多层结构;2. 使用 json_normalize 可将嵌套数据拍平成表格形式,地址字段通过点号路径展开;3. 利用 explode 展开列表字段,每个元素单独一行,或合并为字符串显示;4. 处理复杂嵌套时可通过 record_path 指定路径提取深层字段,结合 max_level 控制展开层级。

处理JSON嵌套结构在Python中是一个常见的任务,尤其是在从API获取数据时。json_normalize 是 pandas 提供的一个非常实用的工具,能将嵌套的 JSON 数据“拍平”成表格形式,方便后续分析。

在实际工作中,我们经常遇到类似如下的结构:
data = [
{
"id": 1,
"name": "Alice",
"address": {
"city": "Beijing",
"zip": "100000"
},
"hobbies": ["reading", "cycling"]
},
{
"id": 2,
"name": "Bob",
"address": {
"city": "Shanghai",
"zip": "200000"
},
"hobbies": ["gaming"]
}
]这个结构中包含了字典嵌套和列表,直接用 pd.DataFrame(data) 处理的话,有些字段还是嵌套的,不方便查看和分析。
立即学习“Python免费学习笔记(深入)”;

pandas.json_normalize() 的基本作用就是把嵌套结构展开成列。你可以这样使用它:
import pandas as pd df = pd.json_normalize(data) print(df)
输出结果会是这样的 DataFrame:

| id | name | address.city | address.zip | hobbies |
|---|---|---|---|---|
| 1 | Alice | Beijing | 100000 | [reading, cycling] |
| 2 | Bob | Shanghai | 200000 | [gaming] |
这样地址信息就被“平铺”出来了。
提示:
record_path 参数指定路径。max_level=1 或者使用 explode。上面的例子中,hobbies 字段是列表,如果我们想把每个爱好单独一行,可以用 explode:
Easily find JSON paths within JSON objects using our intuitive Json Path Finder
30
df = df.explode("hobbies")这样原来的一行可能会变成多行,例如 Alice 就会有两行记录,分别对应 reading 和 cycling。
如果你希望保留原始结构但又不想丢掉列表中的多个值,也可以考虑把这些值合并成字符串:
df["hobbies"] = df["hobbies"].apply(lambda x: ", ".join(x))
这样显示更直观,适合展示类用途。
当结构更深的时候,比如:
{
"user": {
"profile": {
"name": "Charlie",
"contact": {
"email": "charlie@example.com",
"phone": "123456789"
}
}
}
}你可以通过点号表示法访问深层字段:
pd.json_normalize(data, max_level=10)
或者指定字段路径:
df = pd.json_normalize(
data,
record_path=["user", "profile"],
meta=[["user", "profile", "contact", "email"]]
)不过一般建议先用 max_level 试试看效果,再根据需要提取特定字段。
总的来说,json_normalize 虽然功能强大,但也不是万能的,有时候需要配合 apply、explode、rename 等操作一起使用。关键是理解原始结构,并有意识地控制输出格式。
基本上就这些,不复杂但容易忽略细节的地方在于字段路径和层级结构的匹配,稍不小心就会出错。
以上就是如何用Python处理JSON嵌套结构—json_normalize平铺技巧的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号