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

如何用Pandas date_range生成锚定1月/6月的半年频率日期序列?

获取指定范围内1月1日和6月1日的简便方法

你尝试的6MS-JAN之所以不行,是因为这个频率是从1月开始每6个月生成日期(即1月、7月),和你要的1月+6月的需求不匹配。这里有两种更简便的实现方式:

方法一:筛选所有月初日期

先生成起止时间内的所有月初,再过滤出1月和6月的日期,代码简洁直观:

import pandas as pd

start = "2023-01-05"
end = "2024-12-01"

# 生成所有月初日期
all_month_starts = pd.date_range(start=start, end=end, freq="MS")
# 筛选月份为1或6的日期
target_dates = all_month_starts[all_month_starts.month.isin([1, 6])]

print(target_dates)

输出结果:

DatetimeIndex(['2023-06-01', '2024-01-01', '2024-06-01'], dtype='datetime64[ns]', freq=None)

方法二:分别生成1月和6月的序列再合并

如果想直接生成目标月份的序列,可以分别获取每年1月1日和6月1日的日期,再合并排序并过滤:

import pandas as pd

start = "2023-01-05"
end = "2024-12-01"

# 生成每年1月1日的序列
jan_dates = pd.date_range(start=start, end=end, freq="AS-JAN")
# 生成每年6月1日的序列
jun_dates = pd.date_range(start=start, end=end, freq="AS-JUN")

# 合并、排序并过滤掉早于起始时间的日期
target_dates = pd.concat([jan_dates, jun_dates]).sort_values()
target_dates = target_dates[target_dates >= start]

print(target_dates)

这个方法和方法一结果一致,适合需要单独控制某类月份的场景。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 19:33:14