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

Python中pandas如何按一列分组后按另一列对数据排序?

实现方案

首先导入pandas并构造示例数据:

import pandas as pd

df_dict = {'Features':['A','A','A','C','C','C','C','B','B','B'],
           'Date':['1/3/2023','1/3/2022','1/3/2021','1/3/2024','5/8/2020','5/8/2021','5/8/2022','6/1/2020','6/1/2019','5/8/2023'],
           'Value':[7,8,2,6,8,9,8,9,0,10]}
df = pd.DataFrame(df_dict)

方法1:groupby+组内排序(适配复杂分组逻辑)

适合需要对不同分组做差异化排序规则的场景,代码如下:

# 按Features分组后,每个组内按Value升序排序
sorted_df = df.groupby('Features', sort=False, group_keys=False)\
              .apply(lambda x: x.sort_values('Value', ascending=True))\
              .reset_index(drop=True)

参数说明:

  • sort=False:groupby默认会对分组键Features按字母顺序排序,加该参数会保留原始数据中Features的出现顺序(A→C→B),不需要可删除
  • ascending=True:控制组内排序方向,升序填True、降序填False
  • reset_index(drop=True):重置行索引为连续数字

方法2:多列整体排序(性能更高)

如果不需要特殊分组处理,直接对两个字段排序即可达到和分组后组内排序完全一致的效果,性能比apply方法更高:

# 先按Features分组排序,同分组内再按Value升序排序
sorted_df = df.sort_values(by=['Features', 'Value'], ascending=[True, True]).reset_index(drop=True)

排序后输出示例(Value升序):

序号FeaturesDateValue
0A1/3/20212
1A1/3/20237
2A1/3/20228
3C1/3/20246
4C5/8/20208
5C5/8/20228
6C5/8/20219
7B6/1/20190
8B6/1/20209
9B5/8/202310

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 21:18:02