首页 > 解决方案 > 将熊猫数据框转换为具有所有组合的字典

问题描述

我有熊猫数据框如下, 熊猫数据框

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}

标签: pythonpandasnumpy

解决方案


创建索引的第一列Unnamed: 0by 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}

推荐阅读