使用所有组合将熊猫数据帧转换为字典

时间:2020-07-02 08:50:51

标签: python pandas numpy

我有如下熊猫数据框, pandas data frame

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}

1 个答案:

答案 0 :(得分:2)

通过第一列Unnamed: 0DataFrame.set_index创建索引,通过DataFrame.stack重塑并最后调用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}
相关问题