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

如何基于wave列规则为DataFrame生成对应日期列

为Wave编号映射双月日期的解决方案

问题背景

我处理的DataFrame包含wave编号列(值范围1-64),每个wave对应双月频次的日期:wave每递增1,时间推进2个月,其中wave 1对应jan2012,映射规则示例如下:

wavedate
1jan2012
2mar2012
3may2012
4jul2012
5sep2012
6nov2012
7jan2013

解决方案

方法1:逐行计算日期(适配非连续wave)

利用pandas的日期偏移功能,直接对每个wave值计算对应日期:

import pandas as pd

# 示例DataFrame
df = pd.DataFrame({'wave': [1,1,2,3,3,4,5,7,8]})

# 起始日期:wave 1对应的基准日期
start_date = pd.to_datetime('2012-01-01')

# 计算并格式化日期为指定样式
df['date'] = df['wave'].apply(
    lambda x: (start_date + pd.DateOffset(months=2*(x-1))).strftime('%b%Y').lower()
)

方法2:预构建映射字典(高效适配1-64全范围wave)

先批量生成wave 1到64的日期映射,再通过字典匹配快速添加列:

import pandas as pd

# 生成1-64的wave序列和对应日期
wave_range = range(1, 65)
start_date = pd.to_datetime('2012-01-01')
# 按2个月间隔生成日期,格式化为小写"月年"样式
date_series = pd.date_range(start_date, periods=64, freq='2MS').strftime('%b%Y').lower()

# 构建wave到date的映射字典
wave_date_map = dict(zip(wave_range, date_series))

# 给DataFrame添加date列
df['date'] = df['wave'].map(wave_date_map)

说明

  • 方法1适合wave值存在缺失或非连续的场景,逻辑直观;
  • 方法2针对wave范围明确(1-64)的情况,处理大数据集时效率更高。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 04:30:30