Pandas如何将DataFrame列内嵌套JSON数组拆分为多行多列
问题解决方法
报错原因
你原有代码报错是因为两个问题:
value列每一行存储的是字典组成的列表,不是单字典,你自定义函数为空值返回空字典的逻辑和数据结构不匹配- 直接把列表套列表的结构传给
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
相关产品推荐
相关产品推荐

