将Pandas DataFrame转换为聚合型嵌套类JSON结构
把Pandas DataFrame转换为聚合型类JSON对象
Got it!我明白你要把给定的DataFrame转换成按group分组,每个分组下包含category与对应value求和结果的类JSON结构,这就给你一步步拆解实现方法:
1. 基础实现(适用于每个Group-Category唯一的情况)
你的原始数据里每个group下的category都是唯一的,所以直接分组后构造嵌套字典即可,最后可以转成标准JSON格式:
首先导入需要的库并定义你的DataFrame:
import pandas as pd import json # 你的原始数据 df = pd.DataFrame({ 'group': ["Group 1", "Group 1", "Group 2", "Group 3", "Group 3", "Group 3"], 'category': ["Category 1.1", "Category 1.2", "Category 2.1", "Category 3.1", "Category 3.2", "Category 3.3"], 'value': [2, 4, 5, 1, 4, 5] })
接下来用groupby配合apply构造我们需要的嵌套结构:
# 生成嵌套字典(类JSON结构) aggregated_dict = df.groupby('group').apply( lambda group_data: group_data.set_index('category')['value'].to_dict() ).to_dict()
如果需要输出标准的JSON字符串,用json.dumps格式化:
# 转换为格式化后的JSON字符串 aggregated_json = json.dumps(aggregated_dict, indent=4) print(aggregated_json)
输出结果
运行后你会得到这样的结构:
{ "Group 1": { "Category 1.1": 2, "Category 1.2": 4 }, "Group 2": { "Category 2.1": 5 }, "Group 3": { "Category 3.1": 1, "Category 3.2": 4, "Category 3.3": 5 } }
2. 扩展:处理Group-Category重复的情况
如果你的数据里存在同一个group下重复的category,需要对value求和聚合,只需要调整分组逻辑,先按group和category双重分组求和,再转成嵌套结构:
# 先求和聚合,再构造嵌套字典 aggregated_dict_with_sum = df.groupby(['group', 'category'])['value'].sum().unstack().to_dict('index')
这样就能自动把同一组内相同category的value相加,再生成目标结构。
内容的提问来源于stack exchange,提问作者Minnow
相关产品推荐
相关产品推荐

