我在熊猫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)
我该如何解决这个问题?
答案 0 :(得分:1)
将DataFrame.melt
与to_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}]