评分最高的前5部电影

时间:2015-09-22 09:36:08

标签: python pandas

我目前面临一个小问题。我正在使用电影镜头1M数据,并试图获得评分最高的前5部电影。

movies = pandas.read_table('movies.dat', sep='::', header=None, names= ['movie_id', 'title', 'genre'])
users = pandas.read_table('users.dat', sep='::', header=None, names=['user_id', 'gender','age','occupation_code','zip'])
ratings = pandas.read_table('ratings.dat', sep='::', header=None, names=['user_id','movie_id','rating','timestamp'])

movie_data = pandas.merge(movies,pandas.merge(ratings,users))

上面的代码是我编写的将.dat文件合并到一个Dataframe中的代码。 然后,根据评级,我需要来自该movie_data数据框的前5名。

这就是我所做的:

print(movie_data.sort('rating', ascending = False).head(5))

这似乎根据评级找到前5名。但是,输出是:

        movie_id              title                        genre  user_id  \
0              1   Toy Story (1995)  Animation|Children's|Comedy        1   
657724      2409    Rocky II (1979)                 Action|Drama      101   
244214      1012  Old Yeller (1957)             Children's|Drama      447   
657745      2409    Rocky II (1979)                 Action|Drama      549   
657752      2409    Rocky II (1979)                 Action|Drama      684   

    rating  timestamp gender  age  occupation_code    zip  
0            5  978824268      F    1               10  48067  
657724       5  977578472      F   18                3  33314  
244214       5  976236279      F   45               11  55105  
657745       5  976119207      M   25                6  53217  
657752       5  975603281      M   25                4  27510  

正如您所见,Rocky II出现了3次。我想知道我是否可以以某种方式快速删除重复项,除了再次通过列表,并删除重复项。

我查看了一个pivot_table,但我不太清楚它们是如何工作的,所以如果可以用这样的表格来完成,我需要对它们如何工作进行一些解释

EDIT。 第一条评论确实删除了重复。

movie_data.drop_duplicates(subset='movie_id').sort('rating', ascending = False).head(5)

谢谢:)

1 个答案:

答案 0 :(得分:3)

您可以通过调用drop_duplicates删除重复的条目并传递参数subset='movie_id'

movie_data.drop_duplicates(subset='movie_id').sort('rating', ascending = False).head(5)