如何将Pandas分组聚合后的DataFrame转为易用的字典格式?
解决方案
方法1:生成三层嵌套字典(最直观易用)
先把聚合后的多层索引重置为普通列,再通过循环构建嵌套结构,这样可以直接通过「产品→年份→月份」的层级快速取值:
# 重置多层索引为普通列 df_sums_reset = df_sums.reset_index() # 构建嵌套字典 quantity_dict = {} for _, row in df_sums_reset.iterrows(): prod = row["Product"] yr = row["Year"] mth = row["Month"] qty = row["Quantity"] if prod not in quantity_dict: quantity_dict[prod] = {} if yr not in quantity_dict[prod]: quantity_dict[prod][yr] = {} quantity_dict[prod][yr][mth] = qty
使用示例:
# 直接获取指定产品、年份、月份的销量 print(quantity_dict["Product X"][2022][10])
方法2:元组键字典(简洁高效)
如果能接受用元组作为字典的键,可以直接提取Quantity列转字典,省去重置索引的步骤:
quantity_dict = df_sums["Quantity"].to_dict()
使用示例:
# 通过元组键直接取值 print(quantity_dict[("Product X", 2022, 10)])
方法3:JSON格式(跨场景友好)
如果需要在Pandas以外的环境(比如其他编程语言)使用,转成JSON格式最通用:
import json # 先重置索引,再转成JSON数组 df_sums_reset = df_sums.reset_index() json_result = df_sums_reset.to_json(orient="records") # 若需要Python字典列表,可解析JSON字符串 result_list = json.loads(json_result)
得到的是包含所有记录的列表,每个元素是{"Product": "...", "Year": "...", "Month": "...", "Quantity": "..."}格式的字典,方便遍历或筛选。
内容的提问来源于stack exchange,提问作者Hyalskavran
相关产品推荐
相关产品推荐

