Select 和数据框列的最小值,按类别

Select and minimum value of a data frame column, by category

我有一个数据框代表 select 电视节目的 IMDb 评级,包含以下列:

日期,ep_no,剧集,show_title,季,评分

我需要 select 每个节目中评分最低的一集,但我无法显示我想要的所有栏目。

我可以成功 select 使用正确的数据:

df.groupby('show_title')['rating'].min()

但这只显示节目名称和该节目收视率最低的剧集的收视率。

我需要它来显示: show_title、ep_no、剧集、评分

我已经尝试对代码进行各种调整,从简单到复杂,但我想我现在还没有足够的经验来破解这个特殊的难题。

有什么想法吗?

如果我明白你想要什么,this question与这个问题类似;下面的代码应该可以解决问题。

df[df.groupby('show_title')['rating'].transform(min) == df['rating']]

一种方法是按评分对 DataFrame 进行排序,然后删除 show 的重复项,同时保留每个节目的第一次出现:

df.sort_values(by='rating').drop_duplicates(['show_title'], keep='first')
# It's easy just do a sort by show_title , rating before using groupby

df.sort_values(by=['show_title','rating'],inplace=True)

# Now use groupby and return the first instance of every group by object
# first row will automatically contain the minimum rating
df1 = df.groupby('show_title').first()