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

Python中如何将pandas内的JSON行数据拆分为多列(扁平化)

问题原因

你遇到的报错本质是待处理列的JSON数据还处于字符串格式,json_normalize仅支持接收Python字典/列表类的结构化输入,调用字符串对象的values属性自然会抛出异常。

解决步骤
  1. 先将JSON字符串列转换为Python字典格式
import pandas as pd
import json

# 替换下方的json_col为你实际存储JSON数据的列名
df['json_col'] = df['json_col'].apply(json.loads)
  1. 对整列执行扁平化操作,再和原表非JSON字段拼接
# 扁平化JSON字段
json_flat = pd.json_normalize(df['json_col'])
# 合并结果,删除原JSON列避免冗余
final_df = pd.concat([df.drop(columns=['json_col']), json_flat], axis=1)
可选适配方案
  • 若存在JSON格式异常的行,可加异常捕获避免处理中断:
def safe_json_load(s):
    try:
        return json.loads(s)
    except (json.JSONDecodeError, TypeError):
        # 格式错误的行返回空字典,后续可以过滤处理
        return {}

df['json_col'] = df['json_col'].apply(safe_json_load)
  • 若JSON内部有嵌套数组需要展开,可给json_normalize传入record_path和meta参数指定展开规则,示例如下:
# 示例:展开JSON中名为records的嵌套数组,同时保留外层的id、create_time字段
json_flat = pd.json_normalize(
    df['json_col'],
    record_path='records',
    meta=['id', 'create_time'],
    record_prefix='record_'
)

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

相关产品推荐
方舟 Agent Plan

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

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