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

如何对多层索引DataFrame分组取Top2并合并其余项为Other

Pandas 分组取Top2行业并合并剩余项为Other实现方案

直接按如下步骤实现即可,输出结构完全匹配预期:

  • 基于已有的分组计数结果做二次分组处理,不需要重构原始统计逻辑
  • 每个国家分组内先按计数降序排序,保留前2位行业,剩余行业计数求和合并为Other项
  • 最终输出保留原有的多层索引结构,和预期格式完全一致

完整可运行代码

# 生成基础的国家-行业维度计数,和原有逻辑一致
sector_count = df.groupby(["Country", "Sector"]).size()

# 定义单个国家分组的处理规则
def process_single_country(group):
    # 组内按行业计数从高到低排序
    sorted_group = group.sort_values(ascending=False)
    # 截取排名前2的行业
    top2_sectors = sorted_group.head(2)
    # 计算剩余所有行业的计数总和
    other_sum = sorted_group.iloc[2:].sum()
    # 存在剩余行业时追加Other条目,避免生成值为0的无效项
    if other_sum > 0:
        top2_sectors["Other"] = other_sum
    return top2_sectors

# 按国家维度分组应用处理规则,保留多层索引
final_result = sector_count.groupby(level="Country", group_keys=False).apply(process_single_country)

运行结果

打印final_result即可得到目标输出:

Country  Sector       
AU       Telecom         3
         Semiconductor   2
         Other           1
SE       Semiconductor   3
         Telecom         2
         Other           1
dtype: int64

如果后续需要调整保留的头部行业数量,直接修改head(2)中的数值即可,其余逻辑无需改动。

内容的提问来源于stack exchange,提问作者user2629628

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 17:21:10