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

如何将pandas列中存储的JSON内容展开为DataFrame的独立列

pandas JSON列展开为独立列解决方案

前置依赖

需要提前导入pandas和json库:

import pandas as pd
import json

方案1:使用pd.json_normalize(推荐,支持嵌套JSON)

场景1:json_col存储的是JSON字符串

你示例中的JSON默认是字符串格式,按以下方式处理:

# 构造你给出的示例DataFrame
df = pd.DataFrame({
    'json_col': [
        '{"name":"John","role":"manager", "age":40}',
        '{"name":"Mary","role":"director", "age":50}'
    ]
})

# 先将JSON字符串解析为Python字典,再调用json_normalize展开
expanded_df = pd.json_normalize(df['json_col'].apply(json.loads))

场景2:json_col已经是Python字典类型

如果你的列已经提前解析为字典,省略解析步骤直接调用即可:

expanded_df = pd.json_normalize(df['json_col'])

方案2:转列表后构造DataFrame(适合扁平JSON)

针对没有嵌套结构的扁平JSON,也可以用更简洁的写法:

# 字符串版本
expanded_df = pd.DataFrame(df['json_col'].apply(json.loads).tolist())

# 字典版本
expanded_df = pd.DataFrame(df['json_col'].tolist())

保留原始其他列

如果原始DataFrame除了json_col还有其他字段需要保留,可用concat拼接结果:

final_df = pd.concat([df.drop('json_col', axis=1), expanded_df], axis=1)

运行后得到的expanded_df/final_df就是你期望的输出格式:

name      role  age
0  John   manager   40
1  Mary  director   50

小提示

如果你的JSON存在嵌套结构,pd.json_normalize会自动将嵌套键用.拼接为列名,不需要额外处理。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 03:15:03