我有一个名为 movie_df 的 Dataframe ,它有超过3000个**标题、评分和评级的值。**标题是唯一的。评分为0.0 - 10.0。评级为PG-13、G、R或X。它们按评级排序,然后按评分升序排序。
我想按分级查找分级最高的标题。分级最高的标题没有与其他标题相同的分级。
| 职称|刻痕|额定值|
| - -|- -|- -|
| 复仇者|五点四|PG-十三级|
| 美国队长|六点七|PG-十三级|
| 铁人|八点六|PG-十三级|
| 一个人。|一个人。|一个人。|
| 蜘蛛侠|七个|右|
| 冒失鬼|第8.2条|右|
| 死池|10个|右|
预期输出:PG-13:钢铁侠,R:死池
我不想使用循环来查找评分最高的标题。
我试探着:
movie_df.sort_values(by=['rating', 'score'], inplace=True) # sort by rating, score
print(movie_df.to_string()) # to show dataframe
movie_df.groupby('rating').max()
它显示了正确的最高分,但标题是错误的。它也显示了最高标题,但我不想这样。我想知道与最高分相关的标题。
下面是我使用的实际数据及其最高评级的标题:第一个
而output:Rated G output、PG Output、PG-13 Output、R Output
4条答案
按热度按时间eni9jsuy1#
让我们试试看:
我认为您还可以使用
groupby()
和agg()
ajsxfq5m2#
我认为你的数据实际上没有正确排序,这就是为什么你得到了错误的标题,但正确的分数。
尝试
movie_df.groupby('rating').idxmax()
并检查是否获得了正确的索引。vsnjm48y3#
我知道了。这段代码会输出每个评分最高的标题。
它使用Pandas的秩函数。https://pandas.pydata.org/docs/reference/api/pandas.DataFrame.rank.html
smdncfj34#
实际上,您需要的是每个评分的最高分,您可以按以下方式按最高分对每个评分进行分组:
输出1:
输出2: