如何用Pandas从历史起始日期获取指定月份的双周发薪日范围
提取指定月份的每两周发薪日
你可以先生成覆盖目标月份的完整发薪日序列,再通过年份+月份过滤精准提取目标月份的记录,解决原代码包含历史日期的问题。以下是具体实现:
实现步骤
- 定义起始发薪日、目标年月参数
- 生成从起始日到目标月份结束后两周的日期序列(确保覆盖目标月份所有可能的发薪日)
- 筛选出年份和月份与目标匹配的日期
代码示例
import pandas as pd from dateutil.relativedelta import relativedelta # 配置参数 starting_date = pd.to_datetime("1/6/2023") target_year, target_month = 2023, 3 # 生成足够覆盖目标月份的发薪日序列:避免漏掉月末的发薪日 end_date = pd.to_datetime(f"{target_year}-{target_month}-01") + relativedelta(months=1) + relativedelta(days=14) all_pay_dates = pd.date_range(start=starting_date, end=end_date, freq='14D') # 筛选目标月份的发薪日 target_pay_dates = all_pay_dates[(all_pay_dates.year == target_year) & (all_pay_dates.month == target_month)] # 格式化输出为示例格式 print(target_pay_dates.strftime("%m/%d/%Y").tolist())
代码说明
- 把
end_date设为目标月份下一月初再加14天,确保不会遗漏像3/31/2023这类月末的发薪日 - 通过
year和month的双重条件过滤,精准提取目标月份的记录 - 运行后输出结果为:
['03/03/2023', '03/17/2023', '03/31/2023'],与示例完全匹配
内容的提问来源于stack exchange,提问作者Rick Walter
相关产品推荐
相关产品推荐

