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

如何按账户和类别分组删除pandas dataframe中的旧数据行

Pandas 分组保留最新记录实现方案

首先提前做字段类型校验,确保startdate和enddate为 datetime 类型,避免字符串排序逻辑错误,50万行数据的量级下以下方案运行效率足够:

实现步骤

  • 转换日期字段格式
import pandas as pd
# 转换日期字段为datetime类型
df[['startdate', 'enddate']] = df[['startdate', 'enddate']].apply(pd.to_datetime)
  • 排序后提取每组最新记录
# 写法1:排序后去重,可读性更高
df_sorted = df.sort_values(by=['account', 'category', 'enddate'], ascending=[True, True, False])
result = df_sorted.drop_duplicates(subset=['account', 'category'], keep='first')
# 写法2:排序后分组取首行,写法更简洁
result = df.sort_values('enddate', ascending=False).groupby(['account', 'category'], as_index=False).first()

补充说明

  • 如果你判定“最新记录”的规则是按startdate最大为准,把排序字段中的enddate替换为startdate即可
  • 如果存在同分组下enddate相同的情况,可以在排序字段后追加startdate作为第二排序维度,避免取值随机
  • 50万行数据场景下两种方式的运行耗时均在百毫秒级,无性能问题

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 08:57:03