熊猫相关矩阵迭代

时间:2020-08-04 16:09:27

标签: python pandas

我在熊猫df中有这个相关矩阵:

          YAR.OL    NHY.OL      TSLA      MSFT    STB.OL    DNB.OL    SBO.OL
YAR.OL  1.000000  0.505583  0.164433  0.233010  0.387104  0.421862  0.116018
NHY.OL  0.505583  1.000000  0.183107  0.205349  0.445840  0.465982  0.135244
TSLA    0.164433  0.183107  1.000000  0.311312  0.169024  0.206375  0.031973
MSFT    0.233010  0.205349  0.311312  1.000000  0.185617  0.202847  0.105705
STB.OL  0.387104  0.445840  0.169024  0.185617  1.000000  0.499098  0.125401
DNB.OL  0.421862  0.465982  0.206375  0.202847  0.499098  1.000000  0.152566
SBO.OL  0.116018  0.135244  0.031973  0.105705  0.125401  0.152566  1.000000

我想将其转换为词典列表:

       "data": [
            {
              "rowid": "YAR.OL",
              "columnid": "YAR.OL",
              "value": "1.000000"
            },
            {
              "rowid": "YAR.OL",
              "columnid": "NHY.OL",
              "value": "0.505583"
            },.....]

我现在尝试做这样的事情:

index_list = corr_matrix.index.to_list()
data = []
for index_list in corr_matrix:
    corr_matrix_index = corr_matrix[index_list]
    print(corr_matrix_index)

我该如何解决这个问题?

1 个答案:

答案 0 :(得分:1)

DataFrame.meltto_dict配合使用,以“记录”为定向:

data = (df.rename_axis('rowid')
         .reset_index()
         .melt(id_vars='rowid', var_name='columnid')
         .to_dict('records'))

[出]

[{'rowid': 'YAR.OL', 'columnid': 'YAR.OL', 'value': 1.0},
 {'rowid': 'NHY.OL', 'columnid': 'YAR.OL', 'value': 0.505583},
 {'rowid': 'TSLA', 'columnid': 'YAR.OL', 'value': 0.164433},
 {'rowid': 'MSFT', 'columnid': 'YAR.OL', 'value': 0.23301},
 {'rowid': 'STB.OL', 'columnid': 'YAR.OL', 'value': 0.387104},
 {'rowid': 'DNB.OL', 'columnid': 'YAR.OL', 'value': 0.421862},
 {'rowid': 'SBO.OL', 'columnid': 'YAR.OL', 'value': 0.11601800000000001},
 {'rowid': 'YAR.OL', 'columnid': 'NHY.OL', 'value': 0.505583},
 {'rowid': 'NHY.OL', 'columnid': 'NHY.OL', 'value': 1.0},
 {'rowid': 'TSLA', 'columnid': 'NHY.OL', 'value': 0.183107},
 {'rowid': 'MSFT', 'columnid': 'NHY.OL', 'value': 0.20534899999999998},
 {'rowid': 'STB.OL', 'columnid': 'NHY.OL', 'value': 0.44583999999999996},
 {'rowid': 'DNB.OL', 'columnid': 'NHY.OL', 'value': 0.46598199999999995},
 {'rowid': 'SBO.OL', 'columnid': 'NHY.OL', 'value': 0.135244},
 {'rowid': 'YAR.OL', 'columnid': 'TSLA', 'value': 0.164433},
 {'rowid': 'NHY.OL', 'columnid': 'TSLA', 'value': 0.183107},
 {'rowid': 'TSLA', 'columnid': 'TSLA', 'value': 1.0},
 {'rowid': 'MSFT', 'columnid': 'TSLA', 'value': 0.311312},
 {'rowid': 'STB.OL', 'columnid': 'TSLA', 'value': 0.169024},
 {'rowid': 'DNB.OL', 'columnid': 'TSLA', 'value': 0.206375},
 {'rowid': 'SBO.OL', 'columnid': 'TSLA', 'value': 0.031973},
 {'rowid': 'YAR.OL', 'columnid': 'MSFT', 'value': 0.23301},
 {'rowid': 'NHY.OL', 'columnid': 'MSFT', 'value': 0.20534899999999998},
 {'rowid': 'TSLA', 'columnid': 'MSFT', 'value': 0.311312},
 {'rowid': 'MSFT', 'columnid': 'MSFT', 'value': 1.0},
 {'rowid': 'STB.OL', 'columnid': 'MSFT', 'value': 0.185617},
 {'rowid': 'DNB.OL', 'columnid': 'MSFT', 'value': 0.202847},
 {'rowid': 'SBO.OL', 'columnid': 'MSFT', 'value': 0.105705},
 {'rowid': 'YAR.OL', 'columnid': 'STB.OL', 'value': 0.387104},
 {'rowid': 'NHY.OL', 'columnid': 'STB.OL', 'value': 0.44583999999999996},
 {'rowid': 'TSLA', 'columnid': 'STB.OL', 'value': 0.169024},
 {'rowid': 'MSFT', 'columnid': 'STB.OL', 'value': 0.185617},
 {'rowid': 'STB.OL', 'columnid': 'STB.OL', 'value': 1.0},
 {'rowid': 'DNB.OL', 'columnid': 'STB.OL', 'value': 0.49909799999999993},
 {'rowid': 'SBO.OL', 'columnid': 'STB.OL', 'value': 0.125401},
 {'rowid': 'YAR.OL', 'columnid': 'DNB.OL', 'value': 0.421862},
 {'rowid': 'NHY.OL', 'columnid': 'DNB.OL', 'value': 0.46598199999999995},
 {'rowid': 'TSLA', 'columnid': 'DNB.OL', 'value': 0.206375},
 {'rowid': 'MSFT', 'columnid': 'DNB.OL', 'value': 0.202847},
 {'rowid': 'STB.OL', 'columnid': 'DNB.OL', 'value': 0.49909799999999993},
 {'rowid': 'DNB.OL', 'columnid': 'DNB.OL', 'value': 1.0},
 {'rowid': 'SBO.OL', 'columnid': 'DNB.OL', 'value': 0.152566},
 {'rowid': 'YAR.OL', 'columnid': 'SBO.OL', 'value': 0.11601800000000001},
 {'rowid': 'NHY.OL', 'columnid': 'SBO.OL', 'value': 0.135244},
 {'rowid': 'TSLA', 'columnid': 'SBO.OL', 'value': 0.031973},
 {'rowid': 'MSFT', 'columnid': 'SBO.OL', 'value': 0.105705},
 {'rowid': 'STB.OL', 'columnid': 'SBO.OL', 'value': 0.125401},
 {'rowid': 'DNB.OL', 'columnid': 'SBO.OL', 'value': 0.152566},
 {'rowid': 'SBO.OL', 'columnid': 'SBO.OL', 'value': 1.0}]