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

如何使用Pandas将嵌套JSON对象转换为扁平键值对结构?

用Pandas实现嵌套JSON字段的扁平化转换

要把嵌套结构的JSON转换成扁平的键值对格式,用Pandas可以通过以下步骤实现:

1. 确保JSON格式合法

你提供的原始JSON缺少键名的双引号,属于无效格式,需要先修正为合法JSON:

{"location": {"city": "San Francisco", "state": "CA", "country": "USA"}}

2. 用json_normalize直接扁平化加载

这是最简便的方式,json_normalize会自动解析嵌套字段,并生成带层级前缀的列名:

import pandas as pd
from pandas import json_normalize

# 合法的嵌套JSON数据
data = {"location": {"city": "San Francisco", "state": "CA", "country": "USA"}}

# 扁平化加载数据
df = json_normalize(data)

# 将列名中的点替换为下划线,得到目标格式的键名
df.columns = df.columns.str.replace('.', '_')

执行后,df的结构就是你需要的扁平格式:

location_city location_state location_country
0  San Francisco             CA              USA

如果要输出成JSON字符串,直接用to_json方法:

print(df.to_json(orient='records')[1:-1])

输出结果:

{"location_city":"San Francisco","location_state":"CA","location_country":"USA"}

3. 处理已存在的嵌套列DataFrame

如果你的DataFrame已经包含location列(每个元素是字典类型),可以用apply(pd.Series)展开嵌套字段,再添加前缀:

import pandas as pd

# 假设已有包含嵌套列的DataFrame
df = pd.DataFrame({
    'location': [{"city": "San Francisco", "state": "CA", "country": "USA"}]
})

# 展开嵌套字段并添加前缀
location_flat = df['location'].apply(pd.Series).add_prefix('location_')

# 合并到原DataFrame(移除原嵌套列)
df = pd.concat([df.drop('location', axis=1), location_flat], axis=1)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 04:45:13