如何筛选Pandas DataFrame中系数绝对值≥0.75的数据?
解决相关矩阵系数筛选的问题
嘿,我来帮你搞定这个筛选的问题!你遇到的问题主要是代码的逻辑判断出错了,咱们一步步理清楚:
你的代码问题分析
第一行代码:
Corr_matrix1 = Corr_matrix1[(Corr_matrix1['Coefficient'] >= abs(0.75))]
这里abs(0.75)的结果就是0.75,所以这行代码其实等价于筛选大于等于0.75的正值,自然不会包含小于-0.75的负数。第二行代码:
Corr_matrix1 = Corr_matrix1 [(Corr_matrix1 ['Coefficient'] >= 0.75) & (Corr_matrix1 ['Coefficient'] <= -0.75)]
这里的逻辑完全矛盾——一个数值不可能同时满足「大于等于0.75」和「小于等于-0.75」,所以必然返回空结果。你需要用**或运算符|**代替「且运算符&」,同时注意代码里多余的空格(虽然Python允许,但尽量保持整洁)。
正确的两种写法
方法1:明确的或逻辑判断
直接写出两个条件,用|连接,表示满足任意一个条件即可:
Corr_matrix1 = Corr_matrix1[(Corr_matrix1['Coefficient'] >= 0.75) | (Corr_matrix1['Coefficient'] <= -0.75)]
方法2:利用绝对值简化代码(更推荐)
这应该是你第一行代码想实现的效果——直接对Coefficient列取绝对值,再判断是否大于等于0.75,一行代码同时覆盖正负两种情况:
Corr_matrix1 = Corr_matrix1[Corr_matrix1['Coefficient'].abs() >= 0.75]
这样就能准确筛选出所有相关系数大于0.75或者小于-0.75的行啦!
内容的提问来源于stack exchange,提问作者Confucion
相关产品推荐
相关产品推荐

