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

Python中按id分组后对季度值按指定顺序排序的实现方法

解决方案

要实现按id分组后组内按季度日期升序排列,直接通过多字段排序即可完成,不需要复杂的分组聚合操作,步骤如下:

  • 先将原date列转换为pandas可识别的时间类型,你当前的季度格式为Q+季度数 两位年份,需要指定对应格式参数保证转换准确
  • 以id为第一排序键、转换后的时间列为第二排序键做全局排序,即可自动实现同id下按时间先后排列的效果

完整可运行代码示例:

import pandas as pd

# 这里替换为你自己读入数据的代码,示例直接构造原始数据集
data = [
    ["aa", "q1 22", "y"], ["aa", "q1 23", "y"], ["aa", "q2 22", "y"], ["aa", "q2 23", "y"],
    ["aa", "q3 22", "y"], ["aa", "q3 23", "y"], ["aa", "q4 22", "y"], ["aa", "q4 23", "ok"],
    ["bb", "q1 22", "n"], ["bb", "q1 23", "n"], ["bb", "q2 22", "n"], ["bb", "q2 23", "n"],
    ["bb", "q3 22", "n"], ["bb", "q3 23", "n"], ["bb", "q4 22", "n"], ["bb", "q4 23", "ok"]
]
df = pd.DataFrame(data, columns=["id", "date", "stat"])

# 生成临时时间列用于排序
df["date_dt"] = pd.to_datetime(df["date"], format="Q%q %y")
# 多字段排序
df_sorted = df.sort_values(by=["id", "date_dt"], ignore_index=True)
# 删除临时辅助列
df_sorted = df_sorted.drop(columns="date_dt")

print(df_sorted)

运行后输出的结果和你期望的完全匹配。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 03:15:02