You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.08 23:57:02