我有一个数据框(枫木),其中包括“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')错误。任何人都知道为什么?谢谢!
答案 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。它解决了所有问题,适用于数据框。