我有一个关于 Python 中数据操作的基本问题。
我有以下字典:
mydict={('A', 'E'): 23972,
('A', 'D'): 10730,
('A', 'B'): 14748,
('A', 'C'): 3424,
('E', 'D'): 3294,
('E', 'B'): 16016,
('E', 'C'): 3373,
('D', 'B'): 69734,
('D', 'C'): 4662,
('B', 'C'): 159161}
如果仔细观察,这是一个对角线为零的对称矩阵的一半(不包括 0)。我的最终目标是编写一个具有完整矩阵的 pandas 数据框。
暂定方案
我考虑过“解压”字典,获取 5 个列表,每个标签一个,所有值都与其他标签相关,在列表的自身位置添加 0。对于标签“A”和“B”,所需的结果是:
A=[0,mydict(['A','B']),mydict(['A','C']),mydict(['A','D']),mydict(['A','E'])]
B=[mydict(['A','B']),0,mydict(['B','C']),mydict(['D','B']),mydict(['E','B'])]
C、D、E 依此类推。请注意,在 B 中,第 4 个和第 5 个元素是 mydict(['D','B']) 和 mydict(['E','B']),因为 mydict(['B','D']) mydict(['B','E']) 根本不存在于 mydict 中。
这样我就可以轻松地从这些列表中填充数据框:
import pandas as pd
df=pd.DataFrame(columns=['A','B','C','D','E'])
df['A']=A
df['B']=B
问题
我不太确定如何将 mydict“解压”到这些列表中,或解压到任何其他可以帮助我构建矩阵的容器中。有什么建议么?
蛊毒传说
慕勒3428872
有只小跳蛙
SMILET
相关分类