如何将带Author、Date多级索引的Pandas DataFrame转为指定结构嵌套字典
Pandas多级索引Git提交数据转嵌套字典方案
你当前的聚合结果为Author、Date两级行索引,SHA、Insertion、Deletion为数据列,只需先重置索引再做分组转换即可得到目标嵌套结构,操作代码如下:
步骤1:重置索引将多级行索引转为普通列
假设你的聚合后DataFrame命名为agg_df,先执行重置索引操作:
# 重置索引,把Author、Date从索引转为普通列 df_reset = agg_df.reset_index() # 可选:如果需要日期为字符串格式而非Timestamp,添加这一行 df_reset['Date'] = df_reset['Date'].dt.strftime('%Y-%m-%d')
步骤2:按作者分组后转换为嵌套字典
result_dict = ( # 一级分组:按Author聚合 df_reset.groupby('Author') # 每组内将日期设为索引,保留三个指标列,转成日期为键的字典 .apply(lambda x: x.set_index('Date')[['SHA', 'Insertion', 'Deletion']].to_dict('index')) # 最外层转为作者名为键的字典 .to_dict() )
输出结构示例
转换后的结构完全匹配需求:
{ "张三": { "2024-05-01": {"SHA": 2, "Insertion": 156, "Deletion": 32}, "2024-05-02": {"SHA": 1, "Insertion": 47, "Deletion": 9} }, "李四": { "2024-05-01": {"SHA": 3, "Insertion": 201, "Deletion": 78}, "2024-05-03": {"SHA": 2, "Insertion": 89, "Deletion": 14} } }
该结构可以直接用于前端表格渲染,作者、日期、指标字段完整保留,无需额外转换。
内容的提问来源于stack exchange,提问作者milan
相关产品推荐
相关产品推荐

