这是我的职责:
def recommendation(row):
if row['fitness_discipline'] == 'Cycling':
if (row.avg_workout_length > row.total_workout_length) & (row.next_class == 'last'):
filtered_classes = classes[(classes.fitness_discipline != row.prev_class) & (classes.fitness_discipline != row.fitness_discipline)& (classes.class_length < row.avg_workout_length*0.5)].sort_values(by='times_taken',ascending=False)
if filtered_classes.empty:
reco= ''
else:
reco = filtered_classes.iloc[0]['class'] + ', ' + filtered_classes.iloc[1]['class'] + ', '+ filtered_classes.iloc[-1]['class']
return reco
elif (row.total_workout_length >= row.avg_workout_length) & (row.next_class == 'last'):
filtered_classes = classes[(classes.fitness_discipline != row.prev_class) & (classes.fitness_discipline != row.fitness_discipline)& (classes.class_length <= 15)].sort_values(by='times_taken',ascending=False)
if filtered_classes.empty:
reco= ''
else:
reco = filtered_classes.iloc[0]['class'] + ', ' + filtered_classes.iloc[1]['class'] + ', '+ filtered_classes.iloc[-1]['class']
return reco
return None
return None
上面的内容仅用于上下文,因为当我运行它时,它会按照它应该的方式完美地运行。换句话说,当我测试它时:
recommendation(df.iloc[12345])
其中“12345”是数据帧“df”中的一个随机索引,我得到了我想要的字符串的确切输出
然后,当我这样做时:
df['new_column'] = df.apply(lambda x: recommendation(x),axis=1)
我希望在df中创建一个新列,它接受每一行并应用函数,根据每一行将结果输出到“new_column”列中。但是无论我尝试什么,它都失败了,我通常会得到
IndexError: single positional indexer is out-of-bounds'
作为一个错误
目前没有回答
相关问题 更多 >
编程相关推荐