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

如何对DataFrame按相同日期分组后实现值的升序/降序排序?

Pandas按日期分组后组内降序排序实现

需求说明

将DataFrame按相同日期(索引)分组,每组内的数值列(a、b、c)进行降序排序,得到目标输出格式。

示例数据构建

先还原你的示例DataFrame:

import pandas as pd

data = {
    'a': [2, 3, 5, 6, 7, 8, 9, 10, 11],
    'b': [12, 13, 14, 15, 16, 17, 18, 19, 20],
    'c': [21, 22, 23, 24, 25, 26, 27, 28, 29]
}
date_index = ['21-12-30', '21-12-30', '21-12-30', 
              '22-01-30', '22-01-30', '22-01-30', 
              '22-02-28', '22-02-28', '22-02-28']
df = pd.DataFrame(data, index=date_index)

核心实现代码

通过groupby按索引分组,结合apply对每组执行降序排序:

# 按日期索引分组,每组内对所有列降序排序
result = df.groupby(level=0).apply(lambda group: group.sort_values(by=df.columns.tolist(), ascending=False))
# 移除分组产生的多级索引,还原原索引结构
result = result.reset_index(level=0, drop=True)

输出验证

执行后result的结果与你给出的期望输出完全一致:

a   b   c
21-12-30    5   14  23
21-12-30    3   13  22
21-12-30    2   12  21
22-01-30    8   17  26
22-01-30    7   16  25
22-01-30    6   15  24
22-02-28    11  20  29
22-02-28    10  19  28
22-02-28    9   18  27

补充说明

  • 如果日期不是索引而是单独列(如列名date),只需把groupby(level=0)改为groupby('date')即可。
  • 若需要升序排序,将ascending=False改为ascending=True。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 18:35:29