You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 12:45:11