我正在尝试根据相关矩阵创建一个列表(相关性最高的3个选择)。假设我有以下矩阵:
A B C D E
A 1.00 0.15 0.57 0.11 0.98
B 0.59 1.00 0.32 0.24 0.54
C 0.96 0.65 1.00 0.22 0.67
D 0.72 0.33 0.78 1.00 0.92
E 0.88 0.94 0.61 0.48 1.00
所以可以说,然后我根据B列对矩阵进行排序,以得到最相关的矩阵,现在矩阵将如下所示:
A B C D E
B 0.59 1.00 0.32 0.24 0.54
E 0.88 0.94 0.61 0.48 1.00
C 0.96 0.65 1.00 0.22 0.67
D 0.72 0.33 0.78 1.00 0.92
A 1.00 0.15 0.57 0.11 0.98
如您所见,矩阵已排序以显示B列最相关的对应项。然后,我想要的是能够以列表形式返回前3个相关的字母,同时又省略了第一行(B),因为这显然是1:1相关。
例如,我想要top_correlated = ['E', 'C', 'D']
,或者我希望我的列表是我的意思。
与我的所有帖子一样,我知道礼节至少要尝试在代码方面做出一些努力,但是像往常一样,我完全感到困惑,因此为什么要在这里发布。任何帮助表示赞赏。
答案 0 :(得分:1)
您可以在列上调用DataFrame
,而不是对整个nlargest
进行排序,而是从第一个元素开始获取索引和切片,因为它应该始终是自己。
col = 'B'
df[col].nlargest(4).index[1:].tolist()
['E', 'C', 'D']