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

如何将含JSON对象列的Pandas DataFrame转换为结构化DataFrame?

把Pandas中含JSON对象的列转成结构化DataFrame的方案

嘿,这个需求太常见了,我给你分两种场景来拆解,亲测好用~

场景1:DataFrame的某列每个单元格是单个JSON对象(或JSON字符串)

就是你给出的示例:players列每个元素是{"name": "tony", "age": 57}这类结构,不管是已经解析好的字典,还是字符串格式的JSON,都能轻松处理:

步骤示例代码

import pandas as pd
import json

# 先模拟你的原始数据(这里假设players列是JSON字符串格式,如果已经是字典,跳过转字典那步)
df = pd.DataFrame({
    'players': ['{"name": "tony", "age": 57}', '{"name": "peter", "age": 46}']
})

# 1. 把JSON字符串转成Python字典(如果你的列已经是字典,这行可以删掉)
df['players'] = df['players'].apply(json.loads)

# 方法一:用pd.json_normalize(推荐,尤其适合嵌套JSON)
structured_df = pd.json_normalize(df['players'])

# 方法二:用apply(pd.Series)(简单直观,适合平级键值对)
# structured_df = df['players'].apply(pd.Series)

# 看看结果
print(structured_df)

运行后就能得到你想要的结构化DataFrame:

name  age
0   tony   57
1  peter   46

场景2:原始数据是包含players数组的完整JSON结构

如果你的数据源是整个JSON,比如{ "players": [{ "age": 57, "name":"tony" }, { "age": 46, "name":"peter" }] },那直接解析数组部分就行:

步骤示例代码

import pandas as pd
import json

# 从JSON字符串加载(如果是JSON文件,换成open('your_file.json').read())
json_content = '{ "players": [{ "age": 57, "name":"tony" }, { "age": 46, "name":"peter" }] }'
data_dict = json.loads(json_content)

# 直接展开players数组
structured_df = pd.json_normalize(data_dict['players'])

print(structured_df)

如果是直接从JSON文件读取,还能更简洁:

structured_df = pd.json_normalize(pd.read_json('your_json_file.json')['players'])

小提示

  • 如果你的JSON有嵌套结构(比如{"name": "tony", "info": {"height": 180, "weight": 75}}),pd.json_normalize会自动把嵌套字段展开成info.height这种列名,非常方便;
  • 如果只是简单的平级键值对,apply(pd.Series)的代码更短,理解成本更低。

内容的提问来源于stack exchange,提问作者More Than Five

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 11:38:38