You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将含元组键的字典转为以键为索引的多行DataFrame?

问题解决:将元组为键的字典转为多行DataFrame

问题背景

我有一个以元组为键的字典,结构如下:

{('CMS', 'LNT'): 0.8500276624334894,
 ('LNT', 'CMS'): 0.8500276624334894,
 ('LOW', 'HD'): 0.8502400376842035,
 ('HD', 'LOW'): 0.8502400376842036,
 ('SWKS', 'QRVO'): 0.8507993847326996,
 ('QRVO', 'SWKS'): 0.8507993847326996,
 ('WFC', 'BAC'): 0.8510581675586776,
.....

原本用以下代码转换为DataFrame(abc为字典名称):

data_results_1y = pd.DataFrame.from_records(abc, index=[0])
data_results_1y

得到的是多列单行的结构:

(AAL, DAL)  (AAL, UAL)  (AEE, CMS)  (AEE, LNT)  (AEE, WEC)  (AEP, XEL)
0   0.873762    0.898774    0.859258    0.853194    0.8679  0.851787

需要生成多行结构,让元组键作为DataFrame的索引,预期输出如下:

(AAL, DAL)  0.873762
(AAL, UAL)  0.898774
(AEE, CMS)  0.859258
(AEE, LNT)  0.853194
(AEE, WEC)  0.8679
(AEP, XEL)  0.851787

解决方案

方法1:用from_dict指定orient='index'

这是最简洁的实现方式,直接将字典的键作为索引,值作为列数据:

import pandas as pd

data_results_1y = pd.DataFrame.from_dict(abc, orient='index', columns=['Value'])

方法2:传入字典的items()构造DataFrame

先将字典的键值对转为列表,再构造DataFrame后设置索引:

data_results_1y = pd.DataFrame(abc.items(), columns=['Pair', 'Value'])
data_results_1y = data_results_1y.set_index('Pair')

方法3:通过Series中转

先将字典转为Pandas Series(自动以元组为索引),再转为DataFrame:

data_series = pd.Series(abc)
data_results_1y = data_series.to_frame(name='Value')

输出示例

执行上述任意方法后,会得到符合预期的结构:

Value
(AAL, DAL)  0.873762
(AAL, UAL)  0.898774
(AEE, CMS)  0.859258
(AEE, LNT)  0.853194
(AEE, WEC)  0.867900
(AEP, XEL)  0.851787

内容的提问来源于stack exchange,提问作者Niko

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.11 21:35:34