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

Python中pandas DataFrame按列分组后如何在组内按指定列排序

你原来的代码仅生成了GroupBy分组对象,没有执行组内排序、重置次级索引的后续处理逻辑,因此无法得到目标结果。

正确实现代码

import pandas as pd

# 核心实现逻辑
result = df.groupby('Category', sort=False, group_keys=False) \
           .apply(lambda group: group.sort_values('Value1', ascending=True).reset_index(drop=True))

参数说明

  • sort=False:禁止pandas对分组键Category默认排序,保证外层Category的原有顺序不变
  • group_keys=False:避免额外生成分组键层级的索引,保持原有索引结构
  • 组内执行sort_values('Value1')完成升序排序后,调用reset_index(drop=True)删除原次级索引,重新生成0/1/2的连续次级索引,刚好匹配你需要的「次级索引0对应最小Value1、索引2对应最大Value1」的要求。

如果你的原数据已经把索引重置为普通列,也可以用下面的写法实现:

result = df.reset_index() \
           .sort_values(['Category', 'Value1'], ascending=[True, True]) \
           .assign(second_index=lambda x: x.groupby('Category').cumcount()) \
           .set_index(['Category', 'second_index'])

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 07:36:04