如何使用pandas将包含嵌套列表的嵌套字典转换为指定格式的DataFrame
实现代码
你可以通过先将嵌套字典打平为长表,再重塑结构的方式得到目标格式的DataFrame,完整代码如下:
import pandas as pd # 替换为你自己的newDict即可 newDict = { "dataset_1": { "model_1": { "method_1": [[1, 2]], "method_2": [[3, 4]] }, "model_2": { "method_1": [[5, 6]], "method_2": [[7, 8]] } }, "dataset_2": { "model_1": { "method_1": [[9, 10]], "method_2": [[11, 12]] }, "model_2": { "method_1": [[13, 14]], "method_2": [[15, 16]] } } } # 1. 打平嵌套字典为长格式记录 records = [] for dataset_name, model_dict in newDict.items(): for model_name, method_dict in model_dict.items(): for method_name, value_list in method_dict.items(): # 将嵌套的[[value1, value2]]转为逗号分隔的字符串 format_value = ", ".join(map(str, value_list[0])) records.append([dataset_name, model_name, method_name, format_value]) # 2. 转换为DataFrame并重塑结构 df = pd.DataFrame(records, columns=["dataset", "model", "method", "value"]) target_df = df.pivot( index=["model", "method"], columns="dataset", values="value" ).rename_axis(columns=None) # 移除列索引的默认名称
输出说明
得到的target_df完全符合你要求的结构:
- 行索引为两级:第一级是
model,第二级是method - 列名为两个数据集的名称
dataset_1、dataset_2 - 单元格值为你需要的逗号分隔的数值字符串
内容的提问来源于stack exchange,提问作者Opps_0
相关产品推荐
相关产品推荐

