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

pandas按分组循环填充2019年月度日期列的简便实现方法

Pandas 分组匹配循环月度日期实现方案

问题背景

  • 目标DataFrame按state(州)、district(区县)维度分组,每组固定包含12条月度观测记录
  • 需求:新增日期列,每个州-区县组合按顺序匹配2019年1月到12月的月初日期,即从2019-01-01到2019-12-01按月循环
  • 此前执行以下代码生成日期时触发报错:
pd.date_range(start='2019-01-01', end='2020-01-01', freq='M')

报错信息如下:

Length of values (12) does not match length of index (6876)

  • 报错原因:单次生成的日期序列长度仅为12,和DataFrame总计6876行的索引长度不匹配
  • 约束:不接受拆分小DataFrame逐组左连接日期的实现方式,需要简洁命令

实现代码

注意原代码中freq='M'生成的是每月月末日期,要获取月初日期需要使用频率参数freq='MS'(Month Start),完整实现仅需两行核心代码:

# 生成2019年12个月初日期的基准序列
base_dates = pd.date_range(start='2019-01-01', end='2019-12-01', freq='MS')

# 分组生成组内序号,直接映射对应日期赋值为新列
df['date'] = df.groupby(['state', 'district']).cumcount().map(base_dates)

逻辑说明

  • groupby(['state', 'district']).cumcount()会为每个州-区县分组内的行按现有顺序生成从0到11的连续序号,和每组12条记录的结构完全对应
  • 通过序号直接映射长度为12的基准日期序列,自动为每个分组按顺序匹配1-12月的对应日期,全表长度自动对齐,不会出现长度不匹配问题
  • 无需拆分DataFrame、无需逐组拼接,执行效率高,代码简洁

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 21:15:37