索引显示最接近的5个索引的列表

时间:2019-01-04 22:51:59

标签: python pandas

我正在寻找一种方法或函数,该方法或函数将从索引(或电影名称)中显示最接近的5个索引列表(5个电影列表)

我的数据框:

movie_title  movieId   Action  Adventure  Fantasy  Sci-Fi Thriller
Avatar         1        1.0      1.0        1.0     1.0     0.0
Spectre        2        1.0      1.0        0.0     0.0      1  
John Carter    3        1.0      1.0        0.0     1.0     0.0

将DataFrame放置为矩阵:

df_matrix = userGenreTable.as_matrix(columns=userGenreTable.columns[2:])

计算两个向量之间的距离:

from scipy.spatial import distance

for i in range(len(df_matrix)):
    for j in range(len(df_matrix)):
        print(distance.euclidean(df_matrix[i,:], df_matrix[j,:]))

我看不到如何计算最近向量的五个索引。

1 个答案:

答案 0 :(得分:1)

您可以像这样使用.loc。

# Build the array
arr = np.array([[distance.euclidean(df_matrix .loc[i,'Action':'Thriller'],
                                df_matrix .loc[j,'Action':'Thriller']) for j in range(len(df))]\
                                for i in range (len(df))])

# Find the min distance
i,j = np.unravel_index(arr.argmin(), arr.shape)

print([i,j]) # prints the slice location for the minimum euclidean distance.

引用数据框列作为索引很棘手,但是对.loc的更新使我们可以扫描它们的“范围”。希望有帮助!