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

Pandas如何将DataFrame列内嵌套JSON数组拆分为多行多列

问题解决方法

报错原因

你原有代码报错是因为两个问题:

  1. value列每一行存储的是字典组成的列表,不是单字典,你自定义函数为空值返回空字典的逻辑和数据结构不匹配
  2. 直接把列表套列表的结构传给json_normalize,触发了多元素数组的真值判断逻辑

正确实现步骤

1. 导入依赖库

import pandas as pd
import ast

2. 格式化value列

如果你的value列是字符串形式存储的列表,先转为真实的Python列表结构:

df['value'] = df['value'].apply(lambda x: ast.literal_eval(x) if pd.notnull(x) else [])

3. 拆分列表为多行

用explode方法把每行的列表拆分为多行,每行对应一个字典:

df_exploded = df.explode('value', ignore_index=True)

4. 拆分字典为多列

把每行的字典拆分为单独的value和sum列,再拼接原有字段,最后生成自增idx:

# 拆分字典字段
dict_df = pd.json_normalize(df_exploded['value'])
# 拼接原有id、date字段
result = pd.concat([df_exploded[['id', 'date']], dict_df], axis=1)
# 生成从1开始的自增idx列
result = result.reset_index(drop=True).rename_axis('idx').reset_index()
result['idx'] += 1

最后输出的result就是你需要的目标格式。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 08:45:01