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

Pandas如何对包含JSON数组的DataFrame执行explode展开操作

Pandas 数据框执行 explode 展开操作方法

你可以通过两步实现需求:先对存储列表的value列执行 explode 拆分为多行,再将每行的字典结构拆分为独立列即可。


完整可运行代码

import pandas as pd
pd.set_option('display.max_colwidth', None)

# 构造输入数据框
data={'level_2':{1:'name_1a',3:'name_1b',5:'name_10000_xyz'},'value':{1:[{'date':'2020','val':1}],3:[{'date':'2019','val':2},{'date':'2020','val':3}],5:[{'date':'2018','val':4,'num':'str'},{'date':'2019','val':5},{'date':'2020','val':6,'num':'str'}]}}
df = pd.DataFrame(data)

# 核心处理逻辑
# 1. 炸开value列的列表,每个字典占单独一行
df_exploded = df.explode('value', ignore_index=True)
# 2. 将value列的字典拆分为多列,和原level_2列合并
result = pd.concat([
    df_exploded['level_2'],
    df_exploded['value'].apply(pd.Series)
], axis=1)

# 可选:将空值替换为字符串'null',和预期输出格式完全对齐
result = result.fillna('null')

# 打印输出验证
print(result)

补充说明

  • 要求pandas版本 >= 0.25,该版本首次引入explode方法
  • explode方法会将列表类型的单元格内容拆分为多行,其他列的内容自动复制匹配
  • 字典转多列也可以用pd.json_normalize代替apply(pd.Series),处理大表时性能更高:
    result = pd.concat([df_exploded['level_2'], pd.json_normalize(df_exploded['value'])], axis=1)
    
  • 运行后输出的列顺序、值都和给出的预期完全一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 09:36:01