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

如何将Pandas DataFrame转换为自定义JSON格式?

问题与解决方案

问题描述

我的DataFrame如下:

import pandas as pd
df = pd.DataFrame(
    {
        'a': ['x', 'x', 'y', 'y'],
        'b': ['xs', 'sx', 'rrx', 'ywer'],
        'c': ['aaa', 'bbb', 'rrsdrx', 'yz'],
    }
)

我期望得到如下JSON输出:

{
    "x": {
        "links": [
            {
                "b": "xs",
                "c": "aaa"
            },
            {
                "b": "sx",
                "c": "bbb"
            }
        ]
    },
    "y": {
        "links": [
            {
                "b": "rrx",
                "c": "rrsdrx"
            },
            {
                "b": "ywer",
                "c": "yz"
            }
        ]
    }
}

我尝试过以下代码,但输出不符合需求:

import json
x = df.groupby('a')['b'].apply(list).reset_index()
y = x.to_json(orient='records')
parsed = json.loads(y)
z = json.dumps(parsed, indent=4)

解决方案

可以通过分组后组装目标结构的方式实现,代码如下:

import pandas as pd
import json

df = pd.DataFrame(
    {
        'a': ['x', 'x', 'y', 'y'],
        'b': ['xs', 'sx', 'rrx', 'ywer'],
        'c': ['aaa', 'bbb', 'rrsdrx', 'yz'],
    }
)

# 按a列分组,将每组的b、c转为字典列表并包装在links字段下
result = df.groupby('a').apply(
    lambda group: {'links': group[['b', 'c']].to_dict('records')}
).to_dict()

# 生成格式化的JSON字符串
json_result = json.dumps(result, indent=4)
print(json_result)

关键步骤说明

  1. 分组处理:用groupby('a')按a列的值拆分数据;
  2. 组装子结构:对每个分组,提取b和c列,通过to_dict('records')将每行数据转为一个字典,得到字典列表后包装成{'links': 列表}的结构;
  3. 转嵌套字典:用to_dict()将分组结果转为目标格式的嵌套字典;
  4. JSON格式化:最后用json.dumps添加缩进,输出符合要求的JSON字符串。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 14:05:23