Python: 在 pandas 中成功合并 str.contains 和 df.groupby

Python: combining str.contains and df.groupby successfully in pandas

我是一个相当新的程序员,我真的在为我正在进行的项目而苦苦挣扎。我有一个电影数据列表,我试图在其中显示给定电影类型下电影的前 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 部分。我还尝试使用结果中显示的相应分数打印电影标题。
关于我如何处理这个问题的任何指示?

我相信你需要先通过 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)

这应该只会给你真实的记录。

rank[True]