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

读取JSON到Pandas DataFrame时如何保留metadata为单列?

解决方案

要保留metadata为单列,不要使用pd.json_normalize(),直接用pd.DataFrame()构造即可——因为json_normalize的核心作用就是展开嵌套JSON结构为多列,这正是你要避免的行为。

单条记录场景(你的当前情况)

修改代码最后一行,把单条记录包装成列表后传入pd.DataFrame():

import json 
from pathlib import Path
import pandas as pd

json_file_path = r"D:\asset-897428209692977.json"

p = Path(json_file_path)
with p.open('r', encoding='utf-8') as f:
    data = json.loads(f.read())

# 直接构造DataFrame,metadata会保留为单列字典
df = pd.DataFrame([data])

此时df['metadata']列存储的是完整的嵌套JSON结构(Python字典类型),不会被拆分为metadata.planner、metadata.PM这类子列,自然也不会出现因部分记录缺失键导致的列缺失问题。

多条记录场景

如果你的JSON文件是包含多条记录的数组(比如[{}, {}, ...]),直接传入pd.DataFrame()即可:

with p.open('r', encoding='utf-8') as f:
    data = json.loads(f.read())

# 多条记录直接构造
df = pd.DataFrame(data)

后续操作说明

如果之后需要访问metadata里的特定字段,可以通过apply或str.get实现,比如:

# 获取metadata中的planner字段
df['planner'] = df['metadata'].apply(lambda x: x.get('planner'))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 08:38:26