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

如何将含嵌套JSON字符串的字典转换为指定结构的DataFrame?

解决JSON字符串嵌套字典转结构化DataFrame问题

给定如下字典,其中meta字段是存储KPI信息的JSON字符串:

user_data = {
    'id': 206,
    'username': 'hantran',
    'meta': '{"kpi_info":{"2021":{"1":{"revenue":"2000", "kpi":"2100","result":"0"}, "2":{"revenue":"2500", "kpi":"2000", "result":"1"}},"2022":{"1":{"revenue":"3000", "kpi":"2500","result":"1"}, "2":{"revenue":"2500", "kpi":"3000", "result":"0"}}}}'
}

目标是转换成包含id、username、Year、Month、revenue、kpi、result字段的结构化DataFrame,具体结构如下:

idusernameYearMonthrevenuekpiresult
206hantran20211200021000
206hantran20212250020001
206hantran20221300025001
206hantran20222250030000

解决步骤

  1. 解析JSON字符串:先用json.loads把meta字段的JSON字符串转换成Python字典,方便后续遍历。
  2. 扁平化嵌套数据:遍历年份、月份层级,把每个月的KPI数据和顶层的id、username拼接成扁平字典,收集到列表中。
  3. 生成DataFrame:用pandas把收集到的扁平列表转换成DataFrame,调整列顺序匹配目标结构。

完整代码

import json
import pandas as pd

# 原始数据
user_data = {
    'id': 206,
    'username': 'hantran',
    'meta': '{"kpi_info":{"2021":{"1":{"revenue":"2000", "kpi":"2100","result":"0"}, "2":{"revenue":"2500", "kpi":"2000", "result":"1"}},"2022":{"1":{"revenue":"3000", "kpi":"2500","result":"1"}, "2":{"revenue":"2500", "kpi":"3000", "result":"0"}}}}'
}

# 解析meta字段的JSON字符串
meta_dict = json.loads(user_data['meta'])
kpi_info = meta_dict['kpi_info']

# 构造扁平数据列表
flat_data = []
for year, months in kpi_info.items():
    for month, kpi_data in months.items():
        flat_item = {
            'id': user_data['id'],
            'username': user_data['username'],
            'Year': year,
            'Month': month,
            **kpi_data  # 展开KPI字段
        }
        flat_data.append(flat_item)

# 生成DataFrame并调整列顺序
df = pd.DataFrame(flat_data)
df = df[['id', 'username', 'Year', 'Month', 'revenue', 'kpi', 'result']]

# 可选:将数值字段转为整数类型
df[['revenue', 'kpi', 'result']] = df[['revenue', 'kpi', 'result']].astype(int)

# 查看结果
print(df)

运行代码后就能得到目标结构的DataFrame,数值字段的类型转换可根据需求选择是否执行。

内容的提问来源于stack exchange,提问作者Phạm Tấn Thành

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 02:15:36