单个位置索引器超出范围索引错误

时间:2018-11-12 10:24:17

标签: python pandas numpy tqdm

user_ratings_matrix = training_df.pivot(index='userId', columns='movieId', values='rating')
users = user_ratings_matrix.index.values 

print('Creating corated data frame...')
with open('similarities/UsersCorated.csv', 'w') as result_file:
    print('user1,user2,corated', file=result_file)

    print('Calculating corated between users...')
    for u1 in tqdm(users, total=len(users)):
        for u2 in users:

            movies_u1 = ~np.isnan(user_ratings_matrix.iloc[u1 - 1])
            movies_u2 = ~np.isnan(user_ratings_matrix.iloc[u2 - 1])

            same_movies = np.logical_and(movies_u1, movies_u2)
            num_same_movies = list(same_movies).count(True)
        print(f"{u1},{u2},{num_same_movies}", file=result_file)

错误

  

IndexError Traceback(最近的呼叫   最后)在()         1个   ----> 2个相似点-Functions.Corated_Matrix()         3相似功能_Corated_相似度()         4         5印('完成!!!')

     

〜/ Documents / PhD / IntelliSys19 / journal / ColdStart_Experiment / Similarities_Functions.py   在Corated_Matrix()中       对于u2用户为145:       146个评分1 = np.nan_to_num(np.array(user_ratings_matrix.iloc [u1-1] .values))   -> 147个评分2 = np.nan_to_num(np.array(user_ratings_matrix.iloc [u2-1] .values))       148       149 sim = pearsonr(ratings1,ratings2)

     

〜/ anaconda3 / lib / python3.6 / site-packages / pandas / core / indexing.py在    getitem ((自身,密钥))1371 1372也许_callable = com._apply_if_callable(密钥,self.obj)   -> 1373返回self._getitem_axis(可能是可调用的,axis =轴)1374 1375 def _is_scalar_access(自身,键):

     

〜/ anaconda3 / lib / python3.6 / site-packages / pandas / core / indexing.py在   _getitem_axis(self,key,axis)1828 1829#验证位置   -> 1830 self._is_valid_integer(key,axis)1831 1832返回self._get_loc(key,axis = axis)

     

〜/ anaconda3 / lib / python3.6 / site-packages / pandas / core / indexing.py在   _is_valid_integer(自身,键,轴)1711 l = len(ax)1712,如果键> = l或键<-l:   -> 1713提高IndexError(“单个位置索引器超出范围”)1714返回True 1715

     

IndexError:单个位置索引器超出范围

1 个答案:

答案 0 :(得分:0)

IndexError: single positional indexer is out-of-bounds

我相信这只是在说您的iloc语句正在查找不存在的内容。如果您的DataFrame长5行,则iloc [5,0]会超出范围。这是因为最后一行是iloc [4,0],因为它从0开始计数。

相关问题