【发布时间】:2021-10-08 10:15:59
【问题描述】:
我正在处理具有不同属性(例如 A、B、...)的元素(例如 a1、a2、...)之间的距离,我选择 dict 来存储距离。 dict 具有以下形式:
mydict = {('A', ('a1','a2')): 1.0,
('A', ('a1','a3')): 0.5,
('A', ('a2','a1')): 1.1,
('A', ('a2','a3')): 0.8,
('A', ('a3','a1')): 1.2,
('A', ('a3','a2')): 1.2,
('B', ('b1','b2')): 1.0,
('B', ('b1','b3')): 0.5,
('B', ('b2','b1')): 1.1,
('B', ('b2','b3')): 0.8,
('B', ('b3','b1')): 1.2,
('B', ('b3','b2')): 1.2,
}
所以dict 的键是tuples,第一个元素给出属性,第二个元素通过tuple 本身给出这两个元素,其距离在相应的值中给出。
现在我想以交叉表的形式显示数据,看起来应该像这样:
A a1 a2 a3
a1 0 1.0 0.5
a2 1.1 0 0.8
a3 1.2 1.2 0
B b1 b2 b3
b1 0 1.0 0.5
b2 1.1 0 0.8
b3 1.2 1.2 0
每个属性以此类推。
我试图将数据转换为DataFrame,以便使用pandas 的casstab 函数。我尝试将 dict 的键转换为列表并使用pandas.MultiIndex.from_tuples,然后使用MultiIndex.to_frame,但我没有得到可用的格式。
对于如何处理这个问题或以不同的方式存储距离数据有什么建议吗?
【问题讨论】:
-
请提供可复制的词典样本