按类别选择数据框列的最小值

问题描述 投票:0回答:3

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

date,ep_no,episode,show_title,season,rating

我需要选择每个节目中收视率最低的一集,但是我无法显示我想要的所有列。

我可以使用以下方法成功选择正确的数据

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

但这仅显示节目标题和该节目的最低评级剧集的评级。

我需要它来显示:show_title,ep_no,episode,rating

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

有任何想法吗?

python pandas dataframe pandas-groupby
3个回答
1
投票

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

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

0
投票

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

df.sort_values(by='rating').drop_duplicates(['show_title'], keep='first')

0
投票
# 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()
© www.soinside.com 2019 - 2024. All rights reserved.