Skip to main content
 首页 » 编程设计

python之Pandas 按与第一列的相关性对列进行排序

2025年05月04日27mengfanrong

我有一个df

          A         B         C         D 
A  1.000000  0.202557  0.689214  -.705000 
B  0.202557  1.000000  0.038306 -0.113245 
C  0.689214  0.038306  1.000000  0.074773 
D  -.705000 -0.113245  0.074773  1.000000 

我想按与 A 列的相关性排序, 应该按正面到负面排序

          A         C        B         D 
A  1.000000  0.689214  0.202557 -.705000 

我该怎么做? 谢谢

请您参考如下方法:

问题我是这样理解的:你有一个dataframe,比如

   A  B  C 
0  2  0  3 
1  1 -3  0 
2 -1  2 -2 
3  3 -1  2 

并希望通过与列 A 的相关性对其列进行排序。这涉及计算相关性矩阵(如问题所示),然后根据相关性对原始数据帧进行排序。方法如下:

ix = df.corr().sort_values('A', ascending=False).index 
df_sorted = df.loc[:, ix] 

输出:

   A  C  B 
0  2  3  0 
1  1  0 -3 
2 -1 -2  2 
3  3  2 -1 

相关矩阵是对称的,所以我按 pandas 喜欢的方向排序,在列内而不是在行内。然后使用获得的索引对列进行重新排序。