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

DataFrame缺失值填充报错:'function' object is not subscriptable 求助

问题分析与解决办法

嘿,我来帮你搞定这个报错!你遇到的"'function' object is not subscriptable"错误,根源其实很简单——你调用pd.isnull的方式错了。

错误原因

在你的fill_thm函数里,这行代码:

if pd.isnull[THM]:

pd.isnull是pandas提供的一个函数,要给它传参数必须用圆括号(),而你用了方括号[]。方括号是用来给列表、字典、Series这类可下标访问的对象取值的,函数本身不支持这种操作,所以Python就抛出了这个错误。

解决办法

方法1:修正函数调用方式

把pd.isnull[THM]改成pd.isnull(THM),修正后的完整函数如下:

def fill_thm(cols):
    THM = cols[0]
    Season_index = cols[1]
    if pd.isnull(THM):
        if Season_index == 1:
            return 10
        elif Season_index == 2:
            return 20
        elif Season_index == 3:
            return 30
        else:
            return 40
    else:
        return THM

之后再运行你的apply代码就不会报错了。

方法2:更高效的替代写法(推荐)

其实用apply处理大数据量时效率不高,你可以用np.select或者映射字典的方式来实现,代码更简洁且性能更好:

import numpy as np

# 定义条件和对应的值
conditions = [
    maple['Season_index'] == 1,
    maple['Season_index'] == 2,
    maple['Season_index'] == 3,
    maple['Season_index'] == 4
]
values = [10, 20, 30, 40]

# 填充缺失值
maple['THM'] = maple['THM'].fillna(np.select(conditions, values, default=40))

或者用字典映射的方式:

season_map = {1:10, 2:20, 3:30, 4:40}
maple['THM'] = maple['THM'].fillna(maple['Season_index'].map(season_map))

这两种写法都能达到同样的填充效果,而且比apply更快哦。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 04:04:29