如何在Pandas DataFrame中基于日期列生成连续周期序号列?
最优实现方法
核心思路
通过Pandas的日期时间属性做向量化计算,直接基于年份和月份的差值生成周期数,这种方法效率最高,尤其适配大规模数据集。
步骤与代码
- 确保日期列类型正确(若
post_month还不是datetime类型):
import pandas as pd # 转换为datetime类型 df['post_month'] = pd.to_datetime(df['post_month'])
- 生成period列
以2017年11月为周期起点(标记为1),通过年份和月份的差值直接计算每个日期对应的周期数:
# 计算每个日期与2017年11月的月份差,再加1得到最终周期值 df['period'] = (df['post_month'].dt.year - 2017) * 12 + (df['post_month'].dt.month - 11) + 1
验证样例结果
针对你提供的样例数据,计算结果如下:
2018-04-01→ 周期62019-02-01→ 周期162018-09-01→ 周期112018-03-01→ 周期5
方法优势
该方案采用向量化操作,完全避免了逐行循环,计算速度远快于apply类方法;同时代码简洁直观,能稳定覆盖2017年11月至2023年1月的所有日期范围。
内容的提问来源于stack exchange,提问作者Connor95
相关产品推荐
相关产品推荐

