如何从嵌套字典的键与值列表生成pandas MultiIndex DataFrame
解决代码
import pandas as pd import ast # 原始字典 dictionary ={ "{'a': 12.0, 'b': 0.8, 'c': ' bla1'}": [200, 0.0, '0.0'], "{'a': 12.0, 'b': 0.8, 'c': ' bla2'}": [37, 44, '0.6'], "{'a': 12.0, 'b': 1.8, 'c': ' bla3'}": [100, 2.0, '1.0'], "{'a': 12.0, 'b': 1.8, 'c': ' bla4'}": [400, 3.0, '1.0'] } rows = [] for key_str, val_list in dictionary.items(): # 把字符串格式的键解析为字典对象 key_dict = ast.literal_eval(key_str) # 拼接索引字段和数值字段为单行数据 row = {**key_dict, **{f"col_{i}": v for i, v in enumerate(val_list)}} rows.append(row) # 生成DataFrame并设置多层索引 df = pd.DataFrame(rows).set_index(["a", "b", "c"]) # 可自定义列名,示例:df.columns = ["数值1", "数值2", "数值3"]
代码说明
你之前的代码没有对原始字典的字符串键做解析,直接把整段字符串作为单级索引处理,所以无法生成分层索引。上述代码先把字符串格式的键解析为字典,提取a/b/c三个字段的值,再将其设置为多层索引,最终结构和你预期的效果完全匹配。
内容的提问来源于stack exchange,提问作者Gerard
相关产品推荐
相关产品推荐

