功能'对象不是可订阅的",'发生在索引0'

时间:2018-05-16 17:28:06

标签: typeerror

我有一个数据框(枫木),其中包括“THM'”列,其中填充了float64和' Season_index',其中填充了int64。 ' THM' column有一些缺失值,我想使用以下函数填充它们:

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

然后,应用我使用的功能

maple['THM']= maple[['THM','Season_index']].apply(fill_thm,axis=1)

但我得到("'功能'对象不可订阅",'发生在索引0')错误。任何人都知道为什么?谢谢!

3 个答案:

答案 0 :(得分:0)

尝试一下:

def fill_thm(THM, S_i):

 if pd.isnull[THM]:
    if S_i == 1:
        return 10
    elif S_i == 2:
        return 20
    elif S_i == 3:
        return 30
    else:
        return 40
 else:
    return THM

并申请:

maple.loc[:,'THM'] = maple[['THM','Season_index']].apply(lambda row: pd.Series((fill_thm(row['THM'], row['Season_index']))), axis=1)

答案 1 :(得分:0)

尝试此代码:

def fill(cols):
Age = cols[0]
Pclass=cols[1]

if pd.isnull['Age']:

    if Pclass==1:
        return 37
    elif Pclass==2:
        return 30
    else:
        return 28

else:
    return Age

train[:,'Age'] = train[['Age','Pclass']].apply(fill,axis=1)

答案 2 :(得分:0)

首先,当您在特定列上使用Apply时,无需指定axis = 1。

第二秒,如果您使用的是熊猫0.22,则只需升级到0.24。它解决了所有问题,适用于数据框。