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

如何将API返回的JSON字典转为含name/value列的Pandas DataFrame

问题与解决方案

问题背景

从API获取的原始JSON数据如下:

{
    "code": "200000",
    "data": {
        "A": "0.43221600",
        "B": "0.02311155",
        "C": "0.55057515",
        "D": "2.15957924",
        "E": "0.03818908",
        "F": "0.26853420",
        "G": "0.15007500",
        "H": "0.00685843",
        "I": "0.08500848"
    }
}

使用pd.json_normalize()处理后得到宽格式DataFrame:

import pandas as pd
import json 
f = open('file.json', 'r')
j1 = json.load(f)
df_normalized = pd.json_normalize(j1)
print(df_normalized)

输出:

code    data.A  data.B  data.C  data.D  data.E  data.F  data.G  data.H  data.I
0   200000  0.43221600  0.02311155  0.55057515  2.15957924  0.03818908  0.26853420  0.15007500  0.00685843  0.08500848

需要将data字段转换为包含name和value两列的长格式DataFrame。

实现方法

方法1:直接提取data字段构造(最简洁)

跳过json_normalize,直接从加载的JSON中提取data字典,转换为目标结构:

import pandas as pd
import json 

f = open('file.json', 'r')
j1 = json.load(f)
# 将data字典转为(index, value),再重置索引并重命名列
df = pd.DataFrame.from_dict(j1['data'], orient='index').reset_index()
df.columns = ['name', 'value']
print(df)

方法2:从已归一化的宽表转换

如果已经有了归一化后的DataFrame,使用melt()将宽表转长表:

# 基于已有的df_normalized
df_melted = df_normalized.melt(
    id_vars=['code'],  # 保留code列(可选,不需要可移除)
    value_vars=[col for col in df_normalized.columns if col.startswith('data.')],
    var_name='name',
    value_name='value'
)
# 去除name列的"data."前缀
df_melted['name'] = df_melted['name'].str.replace('data.', '')
# 移除code列并重置索引
df_melted = df_melted.drop('code', axis=1).reset_index(drop=True)
print(df_melted)

方法3:在json_normalize阶段指定参数

利用json_normalize的record_path参数直接解析data字段:

df = pd.json_normalize(
    j1,
    record_path=['data'],  # 指定要展开的嵌套字段
    meta=['code'],  # 保留外层的code字段(可选)
    errors='ignore'
)
# 调整列名和结构
df = df.reset_index().rename(columns={'index':'name', 0:'value'}).drop('code', axis=1)
print(df)

最终输出

三种方法均会得到目标结构的DataFrame:

name    value
0   A       0.43221600
1   B       0.02311155
2   C       0.55057515
3   D       2.15957924
4   E       0.03818908
5   F       0.26853420
6   G       0.15007500
7   H       0.00685843
8   I       0.08500848

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 01:55:34