我有一个迭代过程,每次迭代都使用不同的参数值运行,我想收集参数值和结果,并将它们放入 Pandas 数据帧中,该数据帧具有从参数值集(这是唯一的)构建的多索引。每次迭代,参数值都在字典中,如下所示:params = {'p': 2, 'q': 7}因此,很容易将它们与结果一起收集在列表中:results_index = [ {'p': 2, 'q': 7}, {'p': 2, 'q': 5}, {'p': 1, 'q': 4}, {'p': 2, 'q': 4}]results_data = [ {'A': 0.18, 'B': 0.18}, {'A': 0.67, 'B': 0.21}, {'A': 0.96, 'B': 0.45}, {'A': 0.58, 'B': 0.66}]但是我找不到一种简单的方法来从results_index.我试过这个:df = pd.DataFrame(results_data, index=results_index)但它产生了这个: A B{'p': 2, 'q': 7} 0.18 0.18{'p': 2, 'q': 5} 0.67 0.21{'p': 1, 'q': 4} 0.96 0.45{'p': 2, 'q': 4} 0.58 0.66(索引没有转换成MultiIndex)我想要的是这个: A Bp q 2 7 0.18 0.18 5 0.67 0.211 4 0.96 0.452 4 0.58 0.66这有效,但必须有一个更简单的方法:df = pd.concat([pd.DataFrame(results_index), pd.DataFrame(results_data)], axis=1).set_index(['p', 'q'])更新:此外,这有效但让我感到紧张,因为我如何确保参数值与级别名称对齐?index = pd.MultiIndex.from_tuples([tuple(i.values()) for i in results_index], names=results_index[0].keys())df = pd.DataFrame(results_data, index=index) A Bp q 2 7 0.18 0.18 5 0.67 0.211 4 0.96 0.452 4 0.58 0.66
2 回答
largeQ
TA贡献2039条经验 获得超7个赞
我最近遇到了这个问题,似乎有一种比接受的答案更简洁的方法:
results_index = [
{'p': 2, 'q': 7},
{'p': 2, 'q': 5},
{'p': 1, 'q': 4},
{'p': 2, 'q': 4}
]
results_data = [
{'A': 0.18, 'B': 0.18},
{'A': 0.67, 'B': 0.21},
{'A': 0.96, 'B': 0.45},
{'A': 0.58, 'B': 0.66}
]
index = pd.MultiIndex.from_frame(pd.DataFrame(results_index))
pd.DataFrame(results_data, index=index)
输出:
A B
p q
2 7 0.18 0.18
5 0.67 0.21
1 4 0.96 0.45
2 4 0.58 0.66
添加回答
举报
0/150
提交
取消