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

如何在pandas中按分组id分组后对组内行按order字段排序

Pandas 按组内指定字段排序实现方法

实现该需求有两种常用方式,优先推荐第一种多字段直接排序的方案,性能更高:

方法1:sort_values 多字段直接排序

直接指定两个排序字段,先按id分组排序,再在同分组内按order升序排列即可:

# 核心代码,ascending参数可按需调整排序方向
df_sorted = df.sort_values(by=['id', 'order'], ascending=[True, True]).reset_index(drop=True)

方法2:分组后组内排序

如果需要在分组后做更多自定义操作,可以用groupby + apply的写法:

# group_keys=False避免生成额外的分组索引层级
df_sorted = df.groupby('id', group_keys=False).apply(lambda x: x.sort_values('order')).reset_index(drop=True)

完整测试代码

你可以直接运行以下代码验证结果:

import pandas as pd

# 构造示例数据
data = {
    'id': [2, 2, 2, 3, 3],
    'title': ['A', 'B', 'C', 'H', 'T'],
    'order': [2, 1, 3, 2, 1]
}
df = pd.DataFrame(data)

# 方法1排序
df_sorted = df.sort_values(by=['id', 'order'], ascending=True).reset_index(drop=True)
print(df_sorted)

运行后输出结果如下,和预期一致:

id title  order
0   2     B      1
1   2     A      2
2   2     C      3
3   3     T      1
4   3     H      2

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 05:36:03