我有2个对称矩阵,其中一个是相关矩阵,另一个类似于相关矩阵。这些矩阵的例子如下所示:
相关矩阵(c):
A B C D
A 1 0.5 0.1 0.4
B 0.5 1 0.9 0.3
C 0.1 0.9 1 0.3
D 0.4 0.3 0.3 1
其他矩阵(z):
A B C D
A 3 2 2 2
B 2 3 3 2
C 2 3 3 2
D 2 2 2 3
我按降序排列相关矩阵,以便我可以使用以下代码查看最顶层的相关值:
c = corrMatrixMin10.abs()
s = c.unstack()
so = s.sort_values(kind="quicksort")
pd.DataFrame(so[so.values!=1].sort_values(ascending=False))
我的问题如下:
当我按降序排列相关矩阵c
时,相关矩阵本身会失去其形状。如何以完全相同的顺序使另一个矩阵z
?
例如:矩阵A
中的列B
和c
的交集为0.5
。矩阵A
中的列B
和z
的交集为2
。在按降序排列矩阵c
后,如何保留此顺序以关联这两个值?
非常感谢任何帮助。 TIA。
生成2个矩阵的代码如下:
c = pd.DataFrame([[1, 0.5, 0.1, 0.4],
[0.5, 1, 0.9, 0.3],
[ 0.1, 0.9, 1, 0.3],
[ 0.4, 0.3, 0.3, 1]],
columns=list('ABCD'))
z = pd.DataFrame([[3, 2, 2, 2],
[2, 3, 3, 2],
[ 2, 3, 3, 2],
[ 2, 2, 2, 3]],
columns=list('ABCD'))
答案 0 :(得分:3)
您可以使用Series.reindex
c_series = c.unstack().drop([(x, x) for x in c]).sort_values(ascending=False)
z_series = z.unstack().reindex(c_series.index)