python - 将熊猫数据框转换为具有所有组合的字典
问题描述
我有熊猫数据框如下, 熊猫数据框:
print (df)
Unnamed: 0 P1 P2 P3 P4 P5 P6
0 P1 0 245 102 73 275 212
1 P2 32 0 91 181 216 66
2 P3 88 78 0 65 268 32
3 P4 111 39 225 0 103 86
4 P5 265 271 116 279 0 110
5 P6 258 129 247 191 159 0
我需要把它转换成下面的字典,
distance = {('P1','P1'):0,('P1','P2'):245,('P1','P3'):102,('P2','P1'):32}
解决方案
创建索引的第一列Unnamed: 0
by DataFrame.set_index
, reshape byDataFrame.stack
和 last call Series.to_dict
:
distance = df.set_index('Unnamed: 0').stack().to_dict()
print (distance)
{('P1', 'P1'): 0, ('P1', 'P2'): 245, ('P1', 'P3'): 102, ('P1', 'P4'): 73, ('P1', 'P5'): 275, ('P1', 'P6'): 212, ('P2', 'P1'): 32, ('P2', 'P2'): 0, ('P2', 'P3'): 91, ('P2', 'P4'): 181, ('P2', 'P5'): 216, ('P2', 'P6'): 66, ('P3', 'P1'): 88, ('P3', 'P2'): 78, ('P3', 'P3'): 0, ('P3', 'P4'): 65, ('P3', 'P5'): 268, ('P3', 'P6'): 32, ('P4', 'P1'): 111, ('P4', 'P2'): 39, ('P4', 'P3'): 225, ('P4', 'P4'): 0, ('P4', 'P5'): 103, ('P4', 'P6'): 86, ('P5', 'P1'): 265, ('P5', 'P2'): 271, ('P5', 'P3'): 116, ('P5', 'P4'): 279, ('P5', 'P5'): 0, ('P5', 'P6'): 110, ('P6', 'P1'): 258, ('P6', 'P2'): 129, ('P6', 'P3'): 247, ('P6', 'P4'): 191, ('P6', 'P5'): 159, ('P6', 'P6'): 0}
推荐阅读
- javascript - JS递归查找父子数组中的元素
- python - Django 在更新时引用外键
- webstorm - 如何为 WebStorm 中的 js 或 jsx 设置文件掩码以在路径中查找?
- css - Vertical Bootstrap Nav 不会填充 CSS Grid 父元素的宽度
- css - IE11 不接受不是 100 倍数的字体粗细
- javascript - 如何获得2个球/物体之间的距离?
- r - R lubridate:将助手应用于数据框
- python - “具有多个元素的数组的真值不明确。为什么我会收到此错误?
- azure - 将 azure ml 工作室设计器项目导出为 jupyter 笔记本?
- python - SQL - 以编程方式比较 sql ddl