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

如何在Pandas中按id分组后反转order列排序结果

解决Pandas按分组反转order列排序的问题

你需要实现的是按id分组后,每个分组内对order列进行降序排列(从你的示例看,原始分组内order是升序,反转后即为降序),以下是两种可行方案:

方案一:使用groupby.apply自定义函数

如果你坚持用groupby.apply,可以定义一个对分组按order降序排序的函数:

import pandas as pd

# 构造原始DataFrame
df = pd.DataFrame({
    'id': [104337, 104337, 104337, 104341, 104341],
    'name': ['CCC', 'BBB', 'AAA', 'EE', 'DD'],
    'order': [7.0, 8.0, 9.0, 1.0, 2.0]
})

# 自定义分组处理函数
def sort_group(group):
    # 对当前分组按order列降序排序
    return group.sort_values(by='order', ascending=False)

# 应用分组排序,group_keys=False避免生成额外分组索引
result = df.groupby('id', group_keys=False).apply(sort_group)
print(result)

方案二:直接用sort_values多列排序(推荐)

不需要groupby.apply,直接通过多列排序规则就能实现,效率更高:

# 先按id升序聚合同组数据,再按order降序排列
result = df.sort_values(by=['id', 'order'], ascending=[True, False]).reset_index(drop=True)
print(result)

两种方案的输出结果均符合你的需求:

id name  order
0  104337  AAA    9.0
1  104337  BBB    8.0
2  104337  CCC    7.0
3  104341   DD    2.0
4  104341   EE    1.0

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 17:45:32