pandas如何分组创建包含多列的多层嵌套字典
Pandas 多维度分组生成指定嵌套字典方案
你需要生成{Age:{Rating:[Data], Rating:[Data]}结构的嵌套字典,只需在原有单维度分组逻辑上调整分组键和输出格式即可,无需额外写循环做二次处理。
可直接运行的实现代码
# 核心实现,输出完全匹配你需要的嵌套结构 nested_dict = df.groupby(["Age", "Rating"])["Data"].agg(list).unstack().to_dict(orient="index")
针对你给出的测试样例,上述代码运行后输出结果为:
{10: {10: ["Pole"], 5: ["Carl"]}}
和你预期的结构完全一致。
逻辑说明
- 分组阶段同时传入两个分组键:外层维度
Age作为第一分组键,内层维度Rating作为第二分组键,聚合时将同分组下的Data列值合并为列表 - 调用
unstack()将二级索引Rating转换为列,把双层索引的聚合结果转为宽表格式 - 调用
to_dict(orient="index")按行生成字典,行索引(即Age值)作为外层字典的键,每一行内的「Rating值: Data列表」键值对作为内层字典内容
可选优化
如果你的数据中存在部分Age下没有对应Rating值的空组合,默认会生成NaN填充的键值对,可以加一步空值过滤避免脏数据:
nested_dict = df.groupby(["Age", "Rating"])["Data"].agg(list).unstack().dropna(how="all", axis=1).to_dict(orient="index")
内容的提问来源于stack exchange,提问作者wake_advantage
相关产品推荐
相关产品推荐

