如何基于另一列计数对groupby后的level_3索引进行排序
解决groupby后按指定列聚合值排序分组的问题
要实现按level_3分组后,以LHR Item Count的计数(总和)降序排列分组索引,你需要先计算每个分组的聚合值,再以此为依据对分组结果排序。你的原代码仅重置了每组内部的索引,没有处理分组间的排序逻辑。
解决方案代码
# 1. 计算每个level_3对应的LHR Item Count总和,生成排序依据 group_sort_key = WMS_missing.groupby('level_3')['LHR Item Count'].sum() # 2. 按总和降序得到level_3的排序顺序 sorted_levels = group_sort_key.sort_values(ascending=False).index # 3. 按指定顺序分组(关闭默认排序),并重置每组内部索引 result = WMS_missing.groupby('level_3', sort=False).apply(lambda df: df.reset_index(drop=True)).reindex(sorted_levels)
代码说明
- 第一步先统计每个
level_3组的LHR Item Count总和,作为分组排序的依据; - 第二步对统计结果降序排序,得到你期望的
level_3顺序(010在前,006在后); - 第三步通过
sort=False关闭groupby的默认字典序排序,再用reindex将分组结果按指定顺序重新排列,同时保留每组内部重置索引的逻辑。
如果你的“计数”指的是每组的行数而非列值总和,只需将sum()替换为count()即可:
group_sort_key = WMS_missing.groupby('level_3')['LHR Item Count'].count()
内容的提问来源于stack exchange,提问作者ViciOus CircLe
相关产品推荐
相关产品推荐

