如何配置pandas.date_range的freq参数生成指定工作日的DatetimeIndex?
用Pandas生成指定工作日的DatetimeIndex对象
要生成2023年所有周一和周四的DatetimeIndex,有两种高效的实现方式:
方法1:分别生成后合并排序
直接用pd.date_range分别生成周一和周四的日期序列,再合并排序:
import pandas as pd start = "2023-01-01" end = "2023-12-31" # 生成全年所有周一 mondays = pd.date_range(start, end, freq="W-MON") # 生成全年所有周四 thursdays = pd.date_range(start, end, freq="W-THU") # 合并两个序列并排序 target_dates = mondays.union(thursdays).sort_values()
方法2:自定义工作日频率(更优雅)
利用pandas.offsets.CustomBusinessDay定义只包含周一和周四的工作日规则,直接生成目标序列:
import pandas as pd # 自定义仅包含周一、周四的工作日频率 custom_freq = pd.offsets.CustomBusinessDay(weekmask="Mon Thu") start = "2023-01-01" end = "2023-12-31" # 生成目标DatetimeIndex target_dates = pd.date_range(start, end, freq=custom_freq)
关键说明
freq="W-MON"表示每周一的频率,W-THU表示每周四的频率;weekmask参数接受空格分隔的星期缩写(Mon/Tue/Wed/Thu/Fri/Sat/Sun),用于指定需要保留的工作日;- 两种方法最终都会返回排序后的
DatetimeIndex对象,可直接用于后续数据分析。
内容的提问来源于stack exchange,提问作者Rebel
相关产品推荐
相关产品推荐

