我目前面临一个小问题。我正在使用电影镜头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)
谢谢:)
答案 0 :(得分:3)
您可以通过调用drop_duplicates
删除重复的条目并传递参数subset='movie_id'
:
movie_data.drop_duplicates(subset='movie_id').sort('rating', ascending = False).head(5)