索引越界越好

时间:2018-07-30 07:24:59

标签: python pandas indexoutofboundsexception

我收到错误IndexError:索引5105超出了轴5的大小5105的范围 使用该代码,我理解了问题,但是知道我使用df.iterrows()时该如何解决?

anime_edges = {}
for idx, row in interactions_from_selected_users_df.iterrows():
    similar_indices = anime_interactions[idx].argsort()[:-100:-1]
    similar_items = [(anime_interactions[idx][i], interactions_from_selected_users_df['anime_id'][i]) for i in similar_indices]
    anime_edges[row['anime_id']] = similar_items[:20]

此代码的主要目的是创建一个节点与其他最相似节点的边缘(我尝试构建基于图的推荐器)

anime_interactions来自通过linear_kernel嵌入矩阵的点积

anime_interactions = linear_kernel(anime_embeddings, anime_embeddings)

1 个答案:

答案 0 :(得分:0)

您的iterrows()循环使用interactions_from_selected_users_df作为索引占位符,对idx中的每一行进行迭代。但是,您也可以使用idx来索引anime_interactions

根据您的评论,interactions_from_selected_users_df中的行多于anime_interactions,因此当idx大于行数时,您将看到错误消息(5105)在anime_interactions中。

您可以在循环内部使用条件逻辑或try / except捕获这些错误-或仅在idx == len(anime_interactions)时停止。