Pandas按指定列分组后取数值列Top10条目实现问题咨询
问题原因
你之前的写法将libelle_competence也加入了分组键,相当于每个分组仅对应单个技能的一条/多条数据,此时调用nlargest自然无法实现「同职业分类下所有技能排序取前10」的需求。
正确实现代码
仅对Familles professionnelles单列分组,对每个分组整体按prevalence comp %排序取前10条即可:
# 分组取每个职业分类下百分比最高的前10条技能 result = df.groupby("Familles professionnelles", group_keys=False).apply( lambda x: x.nlargest(10, columns="prevalence comp %", keep="all") ).reset_index(drop=True)
参数说明
group_keys=False:避免生成分组键相关的多余索引层级,返回结果结构和原DataFrame一致keep="all":遇到百分比数值相同的条目时全部保留,如果你需要严格限制每个分组最多10条,可以把该参数改成keep="first"
后续绘图参考
你可以直接遍历结果的分组完成单独绘图:
for job_family, group_data in result.groupby("Familles professionnelles"): # 此处替换为你自己的绘图逻辑即可,job_family是职业分类名称,group_data是该分类下的前10条数据 # 示例:绘制柱状图 # group_data.plot(kind="bar", x="libelle_competence", y="prevalence comp %", title=job_family)
内容的提问来源于stack exchange,提问作者user13998985
相关产品推荐
相关产品推荐

