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]
我是一个相当新的程序员,我真的在为我正在进行的项目而苦苦挣扎。我有一个电影数据列表,我试图在其中显示给定电影类型下电影的前 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]