如何将嵌套字典中的列表转换为以列表第三元素为特征列的DataFrame
实现代码
你可以通过两层遍历提取所需字段后直接构造DataFrame,参考代码如下:
import pandas as pd result_rows = [] # 遍历外层ID层 for id_key, sample_data in mydict.items(): # 遍历内层样本层 for sample_id, triples in sample_data.items(): # 提取所有三元组的第三个值作为特征 feature_cols = [triple[2] for triple in triples if len(triple) >= 3] result_rows.append([id_key, sample_id] + feature_cols) # 生成列名 feature_num = len(result_rows[0]) - 2 col_names = ["IDs", "Samples"] + [f"f{idx+1}" for idx in range(feature_num)] # 构造最终DataFrame mydata_frame = pd.DataFrame(result_rows, columns=col_names)
原代码问题说明
你之前写的代码只遍历到了样本名称层级,没有深入提取内层列表的第三个元素,所以无法得到预期的特征列。上面的代码已经兼容了你示例中存在的部分内层列表长度不足的情况,如果你需要对缺失的第三个值填充默认值,可以把列表推导式部分修改为对应填充逻辑即可。
内容的提问来源于stack exchange,提问作者jeny ericsoon
相关产品推荐
相关产品推荐

