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

如何在pandas中创建嵌套DataFrame并转换为目标嵌套JSON格式

解决方法

你之前的操作会生成点分隔的平级字段,是因为Pandas不会自动将带.的列名识别为嵌套结构,只会将其作为普通字符串字段名处理。正确操作步骤如下:

1. 生成嵌套的info列

直接对每行数据做处理,将dob字段封装为字典格式存入新的info列:

df['info'] = df.apply(lambda x: {'dob': x['dob']}, axis=1)

提示:如果数据量较大(如你场景中的10万条),可以用列表推导式替代apply大幅提升处理效率:

df['info'] = [{'dob': dob_val} for dob_val in df['dob']]

2. 清理不需要的字段

删除原始的dob字段以及不需要的extra字段:

df = df.drop(columns=['dob', 'extra'])

3. 导出为符合要求的嵌套JSON

导出时指定orient='records'参数,Pandas会自动将字典类型的列转为嵌套JSON对象:

# 直接生成JSON字符串
result_json = df.to_json(orient='records', force_ascii=False)

# 导出到本地文件,可加indent参数格式化输出
df.to_json('output.json', orient='records', force_ascii=False, indent=2)

完整可运行示例
import pandas as pd
import json

# 模拟你提供的原始数据
raw_data = [
    {'id':0, 'name':'Albert', 'last_name':'Einstein', 'dob':1903, 'extra':{'field1': 1}},
    {'id':100000, 'name':'Zooey', 'last_name':'Deschanel', 'dob':1980, 'extra':{'field1': 1}}
]
df = pd.DataFrame(raw_data)

# 处理嵌套结构
df['info'] = [{'dob': dob_val} for dob_val in df['dob']]
df = df.drop(columns=['dob', 'extra'])

# 验证输出结构
print(json.loads(df.to_json(orient='records')))

运行后输出完全符合要求的结构:

[{'id': 0, 'name': 'Albert', 'last_name': 'Einstein', 'info': {'dob': 1903}}, {'id': 100000, 'name': 'Zooey', 'last_name': 'Deschanel', 'info': {'dob': 1980}}]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 10:54:01