如何在Pandas中为升序日期新增Short/Mid/Long标记列
为排序后的DataFrame添加日期分类列
需求:已按Date列升序排序的DataFrame包含3个不同日期,需新增一列,为最近日期标记Short、中间日期标记Mid、最远日期标记Long。
原始数据集代码
import pandas as pd data = {"product_name":["Keyboard","Mouse", "Monitor", "CPU","CPU", "Speakers"], "Unit_Price":[500,200, 5000.235, 10000.550, 10000.550, 250.50], "No_Of_Units":[5,5, 10, 20, 20, 8], "Available_Quantity":[5,6,10,1,3,2], "Date":['11-05-2021', '23-04-2021', '08-10-2021','23-04-2021', '08-10-2021','11-05-2021'] } df = pd.DataFrame(data) df['Date'] = pd.to_datetime(df['Date'], format = '%d-%m-%Y') df = df.sort_values(by='Date')
解决方案
实现思路
- 提取DataFrame中唯一的升序日期(原数据已按
Date排序,直接去重即可保留顺序) - 建立日期与标记的对应关系:升序首项(最近日期)→
Short,中间项→Mid,末项(最远日期)→Long - 通过
map()方法将映射关系批量应用到Date列,生成新分类列
代码实现
# 获取唯一的升序日期列表 unique_dates = df['Date'].unique() # 构建日期-标记映射字典 date_mapping = { unique_dates[0]: 'Short', unique_dates[1]: 'Mid', unique_dates[2]: 'Long' } # 新增分类列并赋值 df['Date_Category'] = df['Date'].map(date_mapping) # 输出结果查看 print(df)
最终效果
新增的Date_Category列会按规则标记日期:
2021-04-23→Short2021-05-11→Mid2021-10-08→Long
内容的提问来源于stack exchange,提问作者Dan
相关产品推荐
相关产品推荐

