如何用Pandas按年龄分组获取最高平均评分的电影类型并排序?
解决方法
你已经通过分组得到了各年龄段-电影类型的平均评分,接下来可以通过以下步骤在保留age索引层级的前提下完成排序并提取最高评分类型:
1. 按年龄段分组内排序
使用groupby(level="age")锁定年龄段分组,对每组内的平均评分进行降序排序,保持原索引结构不变:
# 每组内按评分降序排序,保留age作为索引层级 sorted_genres = genre_group.groupby(level="age", group_keys=False).apply(lambda x: x.sort_values(ascending=False))
2. 提取各年龄段最高评分类型
如果只需要每个年龄段评分最高的类型,直接用nlargest更高效,同样保留原索引:
# 获取每个年龄段平均评分最高的1个电影类型 top_genre_per_age = genre_group.groupby(level="age", group_keys=False).nlargest(1)
3. 转换为DataFrame(可选)
如果需要更直观的表格形式,可将结果转为DataFrame:
top_genre_df = top_genre_per_age.reset_index(name="average_rating")
结果说明
sorted_genres:仍为MultiIndex Series,每个age下的genres按评分从高到低排列top_genre_per_age:每个age仅保留评分最高的genres及其对应的平均评分top_genre_df:结构化DataFrame,包含age、genres、average_rating三列
内容的提问来源于stack exchange,提问作者Yusuf Çil
相关产品推荐
相关产品推荐

