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

如何提取Pandas列中的JSON数据并通过堆叠完成结构化处理?

需求说明

现有如下结构的DataFrame,其中level/income列存储键为等级、值为对应收入的字典,需要将该列拆分为独立的level、income列,同时保留每行对应的id、name关联关系,字典包含多少个键值对,对应id和name就重复匹配多少行。
初始数据构造代码:

import pandas as pd
df = pd.DataFrame(
    {
        'id':[112, 130, 200],
        'name':['Lara', 'Kasia', 'Rocco'],
        'level/income':[{1:400, 2:800}, {1:100}, {1:1000, 2:2000, 3:5000}]
    }
)
简洁实现方案

不需要手动遍历逐行拼接列表,直接用pandas内置的向量化方法即可实现,代码简洁且执行效率更高:

df_processed = (
    # 将每个字典转换为(level, income)格式的键值对可迭代对象,存入临时列
    df.assign(temp = df['level/income'].map(dict.items))
      # 按临时列拆分为多行,自动适配每个字典的键值对数量,重置索引
      .explode('temp', ignore_index=True)
      # 将拆分后的键值对元组拆为两个独立字段
      .assign(
          level = lambda x: x['temp'].str[0],
          income = lambda x: x['temp'].str[1]
      )
      # 移除原始字典列和临时处理列
      .drop(columns=['level/income', 'temp'])
)
处理结果

执行代码后得到的最终输出如下:

id   name  level  income
0  112   Lara      1     400
1  112   Lara      2     800
2  130  Kasia      1     100
3  200  Rocco      1    1000
4  200  Rocco      2    2000
5  200  Rocco      3    5000
方案优势
  • 无冗余的手动循环、列表追加逻辑,代码可读性强
  • 自动适配不同长度的字典,不需要提前计算每个字典的元素个数做行数对齐
  • 基于pandas内置向量化逻辑实现,数据量较大时运行速度远高于手写iterrows遍历的方案

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 18:00:52