pandas按相关列排序列到第一列

时间:2016-12-27 06:20:13

标签: python pandas

我有一个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

我该怎么做? 感谢

1 个答案:

答案 0 :(得分:5)

我理解如下问题:您有一个数据框,例如

   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方向上排序,在列内而不是在行内排序。然后使用获得的索引对列重新排序。