我是一个新程序员,我真的在为我正在研究的项目而苦苦挣扎。我有一个电影数据列表,试图在给定电影类型下显示电影的前10个得分。
这是我到目前为止所拥有的:
import pandas
from pandas import DataFrame
data = pandas.read_csv('movies.csv')
columns = data[['Title', 'Year', 'Score', 'Genre', 'Director', 'Runtime', 'Revenue']]
IMDB = pandas.DataFrame(data)
gen = IMDB['Genre'].str.contains("Comedy")
rank = IMDB.groupby(gen)['Score'].nlargest(10)
print(rank)
此代码输出以下结果:
但是,我想改为只拉True部分,而忽略False部分。我也在尝试打印电影标题以及结果中显示的相应分数。
关于如何解决这个问题的任何指示?
答案 0 :(得分:0)
我相信您首先需要通过boolean indexing
使用掩码过滤DataFrame,然后再按列Genre
进行分组:
mask = IMDB['Genre'].str.contains("Comedy")
rank = IMDB[mask].groupby('Genre')['Score'].nlargest(10)
print(rank)
但是如果需要所有列,请先按列Score
排序,然后使用GroupBy.head
:
df = IMDB[mask].sort_values('Score', ascending=False).groupby('Genre').head(10)
print(df)
答案 1 :(得分:0)
这应该只给您真实记录。
rank[True]