python - 单个位置索引器超出范围

标签 python pandas numpy

with open('similarities/EuclideanSimilarity.csv', 'w') as result_file:

print('user1,user2,similarity', file=result_file)

print('Calculating similarities between users...')

for u1 in tqdm(users, total=len(users)):

for u2 in users:

ratings1 = np.nan_to_num(np.array(user_ratings_matrix.iloc[u1 - 1].values))

ratings2 = np.nan_to_num(np.array(user_ratings_matrix.iloc[u2 - 1].values))

              sim = 1 / (1 + distance.euclidean(ratings1, ratings2))
                print(f"{u1},{u2},{sim}", file=result_file)"

~/anaconda3/lib/python3.6/site-packages/pandas/core/indexing.py in getitem(self, key) 第1371章 第1372章 -> 1373 返回 self._getitem_axis(maybe_callable, axis=axis) 第1374章 第1375章

~/anaconda3/lib/python3.6/site-packages/pandas/core/indexing.py in _getitem_axis(self, key, axis) 1828 第1829章 -> 1830 self._is_valid_integer(键,轴) 1831年 第1832章

~/anaconda3/lib/python3.6/site-packages/pandas/core/indexing.py in _is_valid_integer(self, key, axis) 第1711章 第1712章 -> 1713 raise IndexError(“单个位置索引器越界”) 第1714章 第1715章

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

最佳答案

您没有提供有关用户user_ ratings_matrix的类型/内容的足够信息,无法可靠地回答您的问题。如果我假设 users 是一个 userID 列表,并且 user_atings_matrix 是一个标准的 Pandas DataFrame ,它们的顺序相同 作为 users,那么你可以重写你的 for 循环,如下所示:

for u1,row1 in tqdm(zip(users, user_ratings_matrix.itertuples(index=False, name=None)), total=len(users)):
    for u2,row2 in zip(users, user_ratings_matrix.itertuples(index=False, name=None)):
        ratings1 = np.nan_to_num(np.array(row1))
        ratings2 = np.nan_to_num(np.array(row2))
        sim = 1 / (1 + distance.euclidean(ratings1, ratings2))
        print(f"{u1},{u2},{sim}", file=result_file)"

说明

user_ ratings_matrix.itertuples(index=False, name=None) 将迭代数据框中的行并将每个行作为元组返回。

zip(users, user_ ratings_matrix.itertuples(index=False, name=None)) 将迭代 (userID, tuple(dataframe_row)) 对。

此外,在您下次在 SO 上发布问题之前,您可能应该阅读 these guidelines about how to produce an example that other people can run/work with 。它将帮助您在此网站上获得更好的答案。

关于python - 单个位置索引器超出范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53231869/

相关文章:

python - 更新已打开的 Matplotlib 图中的子图

python-2.7 - Pandas:计算数据帧行和列中零的比例

python - 使用线性插值填充时间戳 NaT

python - 如何在Excel中使用python将列拆分为父列下的两个子列

python - HDF5 添加 numpy 数组速度慢

python - 在 python 3.5 中,当使用参数列表作为 subprocess.Popen() 的输入时,我无法获得正确的 len(sys.argv)

python - python 中的 argv 不适用于 Windows 可执行文件 cmdline

python - 将与不同值关联的重复条目转换为包含这些值列表的条目?

python - 将 Python 3.5 项目转换为 Jython - UnicodeDecodeError : 'unicodeescape' codec can't decode bytes in position 4-10: illegal Unicode character

python - 在 Jupyter Notebook 中消失的 Plotly plotly ?