pandas使用df.corr()计算相关性时忽略数值型列如何解决
问题原因
corr()方法默认仅对数值类型列计算相关系数,你遇到的列被忽略的问题,本质是这些赋值生成的列整体dtype不是数值类型,和单个赋值元素的类型无关。你逐行条件赋值时,如果目标列是赋值过程中自动创建的,pandas会默认将列的dtype设为object,就会被corr()直接过滤。
修复方案
首先确认列的实际类型,执行如下代码查看目标列的整体dtype,不要仅验证单个元素的类型:
print(Result_ARES['popt0'].dtype)如果输出为
object即可确认是类型问题。方案1:赋值完成后显式转换列类型
对所有被忽略的列统一执行类型转换,非数值内容会被强制转为NaN,不影响相关系数计算:import pandas as pd Result_ARES['popt0'] = pd.to_numeric(Result_ARES['popt0'], errors='coerce')方案2:循环赋值前提前初始化列
在执行for循环赋值前,先提前创建目标列并指定数值类型,避免自动生成object类型列:# 提前初始化所有需要赋值的列,指定为float64类型 Result_ARES['popt0'] = pd.Series(dtype='float64') # 后续再执行你的for循环赋值逻辑即可
修复完成后重新执行df.corr()即可得到包含所有数值列的相关系数结果。
内容的提问来源于stack exchange,提问作者Alex
相关产品推荐
相关产品推荐

