如何将含嵌套结构的Python字典转换为指定列的Pandas DataFrame
字典转指定格式Pandas DataFrame实现
直接按需求过滤无关字段后构造DataFrame即可,不需要额外复杂操作,完整代码如下:
import pandas as pd import numpy as np # 你的原始字典 raw_data = {'explanation': [{'name': 'NEIGHBORHOOD', 'value': 0.8458093122688197, 'error': 0.019018133634142273, 'feature_importance_per_iter': np.array([0.82261371, 0.82421628, 0.82483938, 0.83453245, 0.85977285, 0.87912545, 0.8604959 , 0.84751409, 0.86720277, 0.83778024])}, {'name': 'YEAR', 'value': 0.4042242754940218, 'error': 0.015184773555021066, 'feature_importance_per_iter': np.array([0.39363194, 0.38509538, 0.39644517, 0.40923787, 0.41178442, 0.37712897, 0.41998388, 0.40882951, 0.41056489, 0.42954073])}, {'name': 'LAND_SQFT', 'value': 0.13715830693229863, 'error': 0.008258893257281987, 'feature_importance_per_iter': np.array([0.13647464, 0.13960304, 0.14262865, 0.12864457, 0.14139102, 0.15394684, 0.1435602 , 0.12734839, 0.13019752, 0.1277882 ])}, {'name': 'GROSS_SQFT', 'value': 0.11715647153867334, 'error': 0.00967317296447729, 'feature_importance_per_iter': np.array([0.11283082, 0.11049069, 0.1116555 , 0.10988616, 0.11597264, 0.12351849, 0.10976599, 0.12771447, 0.14007404, 0.1096559 ])}, {'name': 'BLOCK', 'value': 0.1136614418126527, 'error': 0.008338972515966655, 'feature_importance_per_iter': np.array([0.10882301, 0.10517048, 0.10647254, 0.10115866, 0.12008553, 0.11851731, 0.11532969, 0.11737344, 0.13123944, 0.11244431])}], 'runtime': 9.364779472351074, 'runtime_per_iter': [1.8957061767578125, 1.6298415660858154, 1.9324970245361328, 1.8747732639312744, 1.5690438747406006, 1.6631865501403809, 1.4750123023986816, 1.3634819984436035, 1.3420896530151367, 1.4080159664154053]} # 过滤无关字段,只保留需要的三列,直接构造DataFrame df = pd.DataFrame( [{'name': item['name'], 'value': item['value'], 'error': item['error']} for item in raw_data['explanation']] )
- 代码直接跳过外层的
runtime、runtime_per_iter两个键,完全不会读取这两部分内容 - 遍历
explanation对应的列表时,只提取name、value、error三个字段,自动丢弃feature_importance_per_iter字段 - 最终生成的DataFrame列顺序和要求完全一致,可直接使用
执行print(df)就能验证输出结果:
name value error 0 NEIGHBORHOOD 0.845809 0.019018 1 YEAR 0.404224 0.015185 2 LAND_SQFT 0.137158 0.008259 3 GROSS_SQFT 0.117156 0.009673 4 BLOCK 0.113661 0.008339
内容的提问来源于stack exchange,提问作者Jared
相关产品推荐
相关产品推荐

