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

Pandas无法识别数值型缺失值,HDI for year列空值填充失败排查

代码问题分析
  • 问题1:is_numeric_dtype 入参使用错误
    is_numeric_dtype 仅支持判断单个数组/Series的类型,传入整个DataFrame会直接返回False,因此你写的数值型缺失值判断的外层if条件永远不会触发,自然没有执行结果。
  • 问题2:缺失值判断逻辑错误
    df.isnull().any() 返回的是每列是否存在缺失值的布尔Series,不是单个布尔值,和is True做比对永远返回False,就算进入外层if也不会执行填充逻辑。
  • 问题3:语法与逻辑错误
    np.mean(df.column) 写法错误,pandas没有df.column这种取所有列均值的用法,运行会直接抛出属性不存在的报错。
  • 额外问题:名义型填充逻辑bug
    你当前名义型缺失值填充的代码里,把df[i].value_counts().index[0]写成了字符串,实际运行会把'?'替换成这串文本,而不是列的真实众数。
修正后可运行代码

数值型缺失值均值填充

# 遍历所有列,对数值型列做缺失值均值填充
for col in df.columns:
    if is_numeric_dtype(df[col]):
        if df[col].isnull().any():
            col_mean = df[col].mean()
            print(f"mean-{col} = {col_mean}")
            df[col] = df[col].fillna(col_mean)

名义型缺失值众数填充

# 对字符型列做缺失值(含?)众数填充
for col in df.columns:
    if df[col].dtype == object:
        print(col, df[col].unique())
        # 计算众数
        col_mode = df[col].value_counts().index[0]
        print(f"mode-{col} = {col_mode}")
        # 替换?和空值为众数
        df[col] = df[col].replace('?', col_mode)
        df[col] = df[col].fillna(col_mode)

运行后你可以用df.isnull().any()验证填充结果,HDI for year列的缺失值会被计算出的均值0.7766左右填充。

内容的提问来源于stack exchange,提问作者melololo

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 02:48:03