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

Python 按类别选择数据框列的最小值,python,pandas,dataframe,pandas-groupby,Python,Pandas,Dataframe,Pandas Groupby,我有一个数据框,它代表一系列电视节目的IMDb收视率,包括以下栏目: 日期、ep_编号、插曲、节目名称、季节、评级 我需要选择每个节目的最低收视率的一集,但我无法显示我想要的所有栏目 我可以使用以下方法成功选择正确的数据: df.groupby('show_title')['rating'].min() 但这只显示了该节目的节目名称和最低收视率插曲的收视率 我需要它来显示: 节目名称、ep号、剧集、收视率 我尝试过各种各样的代码调整,从简单到复杂,但我想我现在还没有足够的经验来破解这个特殊的难

我有一个数据框,它代表一系列电视节目的IMDb收视率,包括以下栏目:

日期、ep_编号、插曲、节目名称、季节、评级

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

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

df.groupby('show_title')['rating'].min()
但这只显示了该节目的节目名称和最低收视率插曲的收视率

我需要它来显示: 节目名称、ep号、剧集、收视率

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


有什么想法吗?

如果我知道你想要什么,类似于这个问题;下面的代码应该可以做到这一点

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

一种方法是按分级对数据帧进行排序,然后删除重复的
show
,同时保留每个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()