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

Pandas如何按eventid分组内最早时间对分组排序

解决方案

通过分组转换生成每个eventid对应的最小时间辅助列,再基于辅助列排序即可实现需求,整体为Pandas原生向量操作,性能适配大数据量场景。

实现代码

import pandas as pd

# 1. 先将time列转为时间类型,避免字符串排序异常
df['time'] = pd.to_datetime(df['time'], format='%H:%M')

# 2. 生成每个eventid对应最小时间的辅助列
df['group_min_time'] = df.groupby('eventid')['time'].transform('min')

# 3. 按分组最小时间排序,相同最小时间可按eventid稳定排序,最后删除辅助列
df_sorted = df.sort_values(by=['group_min_time', 'eventid'], ignore_index=True).drop(columns='group_min_time')

# 若需要将time转回原字符串格式,可执行以下代码
df_sorted['time'] = df_sorted['time'].dt.strftime('%H:%M').str.lstrip('0')

方案说明

  • 时间复杂度为O(n log n),仅比普通单字段排序多一步O(n)的分组转换操作,性能远高于自定义遍历或多次查询重写方案
  • 分组内行顺序完全保留原始数据中的顺序,符合分组内顺序无要求的需求
  • 若原始数据中time列已经是datetime/time类型,可跳过第一步的类型转换操作

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.13 02:48:03