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

如何在Pandas DataFrame中基于日期列生成连续周期序号列?

最优实现方法

核心思路

通过Pandas的日期时间属性做向量化计算,直接基于年份和月份的差值生成周期数,这种方法效率最高,尤其适配大规模数据集。

步骤与代码

  1. 确保日期列类型正确(若post_month还不是datetime类型):
import pandas as pd

# 转换为datetime类型
df['post_month'] = pd.to_datetime(df['post_month'])
  1. 生成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 → 周期6
  • 2019-02-01 → 周期16
  • 2018-09-01 → 周期11
  • 2018-03-01 → 周期5

方法优势

该方案采用向量化操作,完全避免了逐行循环,计算速度远快于apply类方法;同时代码简洁直观,能稳定覆盖2017年11月至2023年1月的所有日期范围。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 07:32:47