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

如何将Pandas groupby结果嵌套在分组名EU下转为JSON

如何将Pandas分组后的JSON结果嵌套在指定键下?

先还原你的DataFrame场景:

import pandas as pd

data = {
    "EU": ["Ar", "Az", "Be", "Ge", "Ka"],
    "S.": [63, 51, 95, 81, 61],
    "A.": [7, 8, 15, 8, 3],
    "B.": [8, 12, 4, 5, 7],
    "C.": [0, 7, 5, 5, 4]
}
df = pd.DataFrame(data)

你现在遇到的问题是:执行df.groupby(by="EU").sum().to_json(orient="index")后,得到的JSON是以EU的各个取值(比如"Ar"、"Az")作为顶级键的结构,但你需要把这些内容全部嵌套在"EU"这个顶级键下面。

其实解决起来很简单,核心思路就是先把分组后的结果转成字典,再将这个字典放到一个以"EU"为键的新字典中,最后转成JSON。这里给你两种可行的实现方式:

方式一:分步处理(可读性高)

# 1. 先获取分组后的字典格式数据
grouped_data = df.groupby("EU").sum().to_dict(orient="index")
# 2. 把分组数据包装到"EU"键下
target_data = {"EU": grouped_data}
# 3. 转成带缩进的JSON字符串
result_json = pd.io.json.dumps(target_data, indent=2)

print(result_json)

方式二:一行式简洁写法

如果你喜欢更紧凑的代码,可以直接把逻辑合并:

result_json = pd.Series(
    [df.groupby("EU").sum().to_dict(orient="index")],
    index=["EU"]
).to_json(indent=2)

print(result_json)

两种方式最终都会输出你需要的格式:

{
  "EU": {
    "Ar": {"S.":63,"A.":7,"B.":8,"C.":0},
    "Az": {"S.":51,"A.":8,"B.":12,"C.":7},
    "Be": {"S.":95,"A.":15,"B.":5,"C.":5},
    "Ge": {"S.":81,"A.":8,"B.":5,"C.":5},
    "Ka": {"S.":61,"A.":3,"B.":7,"C.":4}
  }
}

本质上就是利用Pandas的to_dict(orient="index")先拿到分组后的字典结构,再手动给它套一层"EU"的顶级键,最后转成JSON就搞定啦。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.09 11:32:30