我正在处理不同属性(例如A、B等)的元素(例如a1、a2等)之间的距离,并选择Adict
来存储距离。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
的键是tuple
,第一个元素给出属性,第二个元素是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
,但没有得到可用的格式
对于如何处理这个问题,或者如何以不同的方式存储距离数据,有什么建议吗
我认为数据的格式很好。您只需要正确地将其解包即可获得可用的数据帧
.fillna(0)
,以获得与您的问题完全相同的结构)李>^{pr 1}$
相关问题 更多 >
编程相关推荐