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

基于Pandas v0.24.2与Python3.7实现按score排序并按parentid分组的技术咨询

解决方案:按组优先级(组内最高Score)排序,组内再按Score降序排列

我完全懂你的需求——你要的不是先分组再各自排序,而是先全局找出Score最高的那条记录所属的组,把整个组的所有记录按Score降序排在一起;接着在剩下的数据里找Score最高的记录,再把它所属的组按同样方式排好,以此类推。

实现思路

核心是给每个记录标记它所属组的最高Score,这样排序时:

  1. 先按「组的最高Score」降序,确保优先级高的组整体排在前面
  2. 再按「自身Score」降序,组内成员按Score从高到低排列

适配Pandas 0.24.2的代码

假设你的DataFrame名为df,执行以下步骤:

# 1. 给每条记录添加所属组的最高Score(用transform保证每条记录都能拿到对应组的最大值)
df['group_max_score'] = df.groupby('parentid')['score'].transform('max')

# 2. 先按组最高Score降序,再按自身Score降序排序
sorted_df = df.sort_values(by=['group_max_score', 'score'], ascending=[False, False])

# 3. 移除临时添加的列(可选,根据需求保留)
sorted_df = sorted_df.drop(columns=['group_max_score'])

验证结果

用你提供的示例数据运行后,得到的结果完全符合你的预期:

cidparentidscore
10001002000
111001000
100100200
12100100
3101001
1101000
210100
101020
1121000100
111100010

为什么这个方法可行?

transform('max')会把每个parentid组的最高Score赋值给该组的每一条记录,这样排序时,同一组的所有记录会因为group_max_score相同而被归为一组,同时组的顺序由这个最大值决定(全局从高到低),组内再按自身Score排序,完美匹配你的需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.29 12:08:16