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

Pandas如何为升序排列的DataFrame分组旧记录新增标记列

实现方案

你的原有代码存在两个问题:一是使用正序累计计数搭配固定阈值,无法适配不同分组的长度差异;二是没有从最新记录倒推筛选需要排除的3条数据。
由于date列已经提前按升序排列,每组的最后3条就是最新记录,直接使用分组倒序累计计数即可实现需求:倒序计数时,每组最新的3条记录计数值为0、1、2,计数值大于等于3的记录就是需要标记的旧数据。

完整实现代码:

import pandas as pd
import numpy as np

df['old_data'] = np.where(
    df.groupby('name').cumcount(ascending=False) >= 3,
    'yes',
    ''
)
逻辑校验

对应你给出的预期结果,各分组的计算逻辑完全匹配:

  • test组共6条记录:倒序计数后前3条旧记录计数值为3、4、5,标记为yes,后3条最新记录留空
  • test3组共4条记录:倒序计数后仅最早1条记录计数值为3,标记为yes,后3条留空
  • test4组共3条记录:所有记录倒序计数值为0、1、2,无符合条件的旧记录,全部留空
  • test5组共8条记录:倒序计数后前5条旧记录计数值≥3,标记为yes,后3条留空
  • test6组共5条记录:倒序计数后前2条旧记录计数值为3、4,标记为yes,后3条留空

运行后输出结果和你给出的预期完全一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 19:06:25