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

求助:如何将CSV中JSON字段展平为指定列?已试json_normalize等无效

解决JSON展平并生成指定结构化列的问题

核心思路

直接针对你需要的目标字段精准提取嵌套JSON中的值,避免json_normalize默认自动展开导致的结构混乱。以下是适配你需求的具体实现步骤:

步骤1:导入依赖库

import pandas as pd
import json

步骤2:加载JSON数据

替换成你的JSON数据源(文件/API返回的变量均可):

# 从文件加载示例,若为内存中的JSON对象直接使用即可
with open('your_json_file.json', 'r') as f:
    json_data = json.load(f)

步骤3:定义字段提取规则

对应你期望的列结构,明确每个目标字段的JSON路径:

# 键为最终列名(支持多级表头拆分),值为提取对应JSON字段的逻辑
field_rules = {
    'info.version': lambda x: x.get('info', {}).get('version'),
    'paths.modified': lambda x: x.get('paths', {}).get('modified'),
    'endpoints.added': lambda x: x.get('endpoints', {}).get('added'),
    'components.schemas:added': lambda x: x.get('components', {}).get('schemas', {}).get('added'),
    'components.requestBodies:added': lambda x: x.get('components', {}).get('requestBodies', {}).get('added')
}

步骤4:生成目标DataFrame

单条JSON记录场景

result = {}
for col_name, extract_func in field_rules.items():
    result[col_name] = [extract_func(json_data)]

# 转换为多级表头的DataFrame,匹配你期望的格式
df = pd.DataFrame(result)
df.columns = pd.MultiIndex.from_tuples([col.split('.') for col in df.columns])

print(df)

多条JSON记录场景(如JSON数组)

result = {}
for col_name, extract_func in field_rules.items():
    result[col_name] = [extract_func(item) for item in json_data]

df = pd.DataFrame(result)
df.columns = pd.MultiIndex.from_tuples([col.split('.') for col in df.columns])

为什么之前的方法失效?

json_normalize默认会自动展开嵌套数组,若你的JSON是单条记录、或嵌套层级中存在非数组的复杂结构,默认参数会导致字段被错误展开或遗漏。上面的方法通过精准提取目标字段,完全匹配你需要的列结构,避免了自动展开带来的混乱。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 04:37:19