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

如何为Pandas DataFrame中的月份按倒序标记M1、M2序列标签

实现方法

要给最新的月份标记为M1,次新的标记为M2,以此类推,可以通过以下步骤实现:

  1. 基于日期降序排名:利用rank()函数对date列按降序排序,最新的日期会获得排名1,次新的为2,以此类推。使用method='dense'可确保同一月份的所有日期获得相同排名(若存在同月多条数据的情况)。
  2. 生成标签:将排名结果转为整数后拼接前缀M,得到最终的tag列。

完整代码

import pandas as pd

# 创建原始DataFrame
df = pd.DataFrame({
    'c':[0,1,1,2,2,2],
    'date':pd.to_datetime(['2016-01-01','2016-02-01','2016-03-01','2016-04-01','2016-05-01','2016-06-05'])
})

# 生成tag列
df['tag'] = 'M' + df['date'].rank(ascending=False, method='dense').astype(int).astype(str)

# 查看结果
print(df)

输出结果

c       date tag
0  0 2016-01-01  M6
1  1 2016-02-01  M5
2  1 2016-03-01  M4
3  2 2016-04-01  M3
4  2 2016-05-01  M2
5  2 2016-06-05  M1

补充说明

如果数据中存在同一月份的多条记录(比如两个2016-06-XX的日期),method='dense'会让它们的排名相同,最终都标记为M1,符合“同一月份视为同一批次”的需求。若不需要该逻辑,可将method改为'first',此时同月份的不同日期会按出现顺序获得连续排名。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 09:25:14