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

如何解析DataFrame的JSON列并将解析值作为新列添加到原数据框

Pandas解析DataFrame JSON列并提取指定键追加为新列

针对保留原列、拆分JSON列提取指定值为新列的需求,直接按以下场景选对应实现即可。


前置示例数据构造

先构造和描述一致的测试DataFrame:

import pandas as pd

df = pd.DataFrame({
    'column1': ['One'],
    'column2': ['Two'],
    'json_column': [{'A': '1', 'B': '2', 'C': '3'}]
})

场景1:json_column列存储的是原生字典对象

如果列里存的已经是Python字典(不是字符串格式的JSON),直接用apply提取目标键即可:

  • 提取单个键(比如提取键B,新增同名列)
# 用get取值避免键不存在时报错,缺失值自动填充None
df['B'] = df['json_column'].apply(lambda x: x.get('B'))
  • 批量提取多个键
# 把要提取的键放到列表里批量处理
target_keys = ['A', 'B', 'C']
for key in target_keys:
    df[key] = df['json_column'].apply(lambda x: x.get(key))

场景2:json_column列存储的是JSON格式字符串

如果列里存的是类似'{"A":"1","B":"2","C":"3"}'的文本,先转成字典再做提取:

import json

# 先把JSON字符串转为字典对象
df['json_column'] = df['json_column'].apply(json.loads)
# 后续提取逻辑和场景1完全一致
df['B'] = df['json_column'].apply(lambda x: x.get('B'))

如果用的是1.0及以上版本的Pandas,要提取JSON里的全部键,不用手动枚举,直接用json_normalize批量拆分后拼接回原表即可:

# 拆分JSON列得到所有键对应的新列,和原表按行拼接,自动保留所有原列
df = pd.concat([df, pd.json_normalize(df['json_column'])], axis=1)

处理完成后输出结果和预期一致:

column1column2json_columnB
OneTwo{'A': '1', 'B': '2', 'C': '3'}2

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 14:06:31