如何在不重置索引的情况下获取groupby后按Total排序的前7大分组?
解决方案
情况1:你的数据是多层索引(MultiIndex)的DataFrame
已经通过groupby+sort_index(level=1)得到排序后的DataFrame(即你展示的表格形式,Name和Total作为层级索引),可直接基于索引筛选:
# 获取前7个唯一的分组索引((Name, Total)组合) top7_group_indexes = df.index.unique()[:7] # 提取对应分组的所有数据 top7_df = df.loc[top7_group_indexes]
情况2:你的数据是GroupBy对象
如果还未将分组结果转换为DataFrame,仅持有GroupBy对象,可通过分组键列表批量获取:
# 按Total降序排序后的GroupBy对象假设为gb # 获取前7个分组的键 top7_keys = list(gb.groups.keys())[:7] # 合并多个分组的数据 top7_df = pd.concat([gb.get_group(key) for key in top7_keys])
关键说明
- 两种方法均无需重置索引,完全基于原有的分组索引/GroupBy结构操作。
- 由于你已按
Total完成排序,前7个唯一分组索引/分组键即为Total值最大的7个分组。
内容的提问来源于stack exchange,提问作者Dintal -_-
相关产品推荐
相关产品推荐

