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

如何使用pandas按字段聚合并将DataFrame转为指定嵌套结构JSON

Pandas实现分组聚合生成指定结构JSON的方法

实现步骤

    1. 导入依赖、构造示例DataFrame
import pandas as pd
import json

# 构造示例数据
df = pd.DataFrame({
    "lat": [0, 0, 1, 1],
    "long": [2, 2, 3, 3],
    "city": ["rio", "rio", "sp", "sp"],
    "nameDisease": ["Dengue", "Chicungunha", "Dengue", "COVID"],
    "numberCases": [1, 2, 3, 4]
})
    1. 按lat/long/city三个字段分组,聚合生成diseases数组
      核心逻辑是对分组后的每组数据,提取疾病名称、病例数两列,直接转换为字典列表作为diseases字段的值:
# 分组聚合
agg_df = df.groupby(["lat", "long", "city"]).apply(
    lambda group: group[["nameDisease", "numberCases"]].to_dict("records")
).reset_index(name="diseases")
    1. 转换为目标格式JSON
      将聚合后的DataFrame转为记录式字典列表,再序列化为JSON字符串即可:
# 生成最终JSON
final_json = json.dumps(agg_df.to_dict("records"), ensure_ascii=False)

# 打印验证结果
print(final_json)

输出结果

运行后得到的JSON结构和需求完全匹配(修正了需求示例中缺失的括号语法错误):

[{"lat":0,"long":2,"city":"rio","diseases":[{"nameDisease":"Dengue","numberCases":1},{"nameDisease":"Chicungunha","numberCases":2}]},{"lat":1,"long":3,"city":"sp","diseases":[{"nameDisease":"Dengue","numberCases":3},{"nameDisease":"COVID","numberCases":4}]}]

关键说明

  • 分组时传入三个字段作为分组键,保证经纬度、城市完全一致的行才会被聚合到同一组
  • to_dict("records")方法可以直接把DataFrame行转为{列名:值}格式的字典,不需要手动遍历拼接,执行效率更高
  • 序列化JSON时传入ensure_ascii=False可以避免中文/特殊字符被转义为Unicode编码,数据全为英文时可省略该参数

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.31 10:54:47