如何将多份字典列表与单个列表转换为DataFrame?
将嵌套数据转换为指定格式DataFrame的实现方法
核心实现代码
注意不要用Python内置函数名list作为变量名,避免语法冲突。以下是生成目标格式DataFrame的代码:
import pandas as pd # 原始数据 list_val = [0.2, 0.5] dict1 = [{'a':13, 'b':16}, {'a':25, 'b':70}] dict2 = [{'a':0.15, 'b':0.02}, {'a':0.30, 'b':0.24}] # 构造每行数据条目 data_rows = [] for val, d1, d2 in zip(list_val, dict1, dict2): # 遍历字典的键,对应生成a、b两行数据 for key in d1: data_rows.append([key, val, d1[key], d2[key]]) # 转换为DataFrame并设置列名 df = pd.DataFrame(data_rows, columns=['index', 'list', 'dict1', 'dict2']) # 将index列设为DataFrame的索引(可选,和示例格式完全匹配) df.set_index('index', inplace=True) print(df)
运行后输出结果与要求格式一致:
list dict1 dict2 index a 0.2 13 0.15 b 0.2 16 0.02 a 0.5 25 0.30 b 0.5 70 0.24
更优的DataFrame呈现方式
如果希望数据结构更紧凑、可读性更强,可以采用层次化列+索引的格式,把list的值作为行索引,a/b和dict1/dict2作为层次化列:
import pandas as pd list_val = [0.2, 0.5] dict1 = [{'a':13, 'b':16}, {'a':25, 'b':70}] dict2 = [{'a':0.15, 'b':0.02}, {'a':0.30, 'b':0.24}] # 构造层次化数据结构 hierarchical_data = {} for val, d1, d2 in zip(list_val, dict1, dict2): hierarchical_data[val] = {'dict1': d1, 'dict2': d2} # 转换为层次化列DataFrame df_hier = pd.DataFrame.from_dict(hierarchical_data, orient='index').stack().unstack(level=1) df_hier.columns = pd.MultiIndex.from_tuples(df_hier.columns) print(df_hier)
输出格式如下,能直观看到每个list值对应的所有指标数据:
dict1 dict2 a b a b 0.2 13 16 0.15 0.02 0.5 25 70 0.30 0.24
内容的提问来源于stack exchange,提问作者Babz
相关产品推荐
相关产品推荐

