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

如何将DataFrame中的嵌套JSON字符串列拆分为多个独立列

解决DataFrame嵌套JSON字符串列拆分报错问题

报错的核心原因是people_info列的单元格存储的是JSON格式字符串,而非Python原生的列表/字典结构,json_normalize无法直接处理字符串类型的输入,按以下步骤操作即可解决:

操作步骤

  • 导入依赖库
import pandas as pd
import json
  • 定义JSON安全转换函数(避免非法格式导致程序中断)
def safe_parse_json(s):
    try:
        return json.loads(s)
    except:
        # 格式错误的单元格返回空列表兜底
        return []
  • 将字符串列转换为Python对象列
df["people_info_obj"] = df["people_info"].apply(safe_parse_json)
  • 拆分嵌套结构生成新列

场景1:每个单元格仅包含1个嵌套对象(即示例中的单元素数组)

# 提取数组中的第一个字典,空数组返回空字典
df["people_info_obj"] = df["people_info_obj"].apply(lambda x: x[0] if x else {})
# 展开字典为独立列,合并回原DataFrame
df = pd.concat([
    df.drop(columns=["people_info", "people_info_obj"]),
    pd.json_normalize(df["people_info_obj"])
], axis=1)

场景2:部分单元格包含多个嵌套对象(数组内有多条数据)

# 先展开列表为多行
df = df.explode("people_info_obj", ignore_index=True)
# 提取字典字段为新列,合并回原DataFrame
df = df.join(pd.json_normalize(df["people_info_obj"])).drop(columns=["people_info", "people_info_obj"])

极简写法(确认所有单元格JSON格式合法且为单元素数组时可直接使用)

df = df.join(pd.json_normalize(df["people_info"].apply(json.loads).str[0])).drop(columns="people_info")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.19 19:45:03