如何从DataFrame日期索引中提取每年7月的最后一个工作日?
提取DataFrame日期索引中每年7月的最后一个工作日
以下是针对不同场景的实现方案,逻辑简洁且覆盖你提到的所有情况:
核心思路
- 先筛选出索引中所有7月的日期;
- 按年份分组,每组取最大日期(即该年7月在序列中存在的最后一个工作日);
- 自动跳过无7月日期的年份,仅保留有数据的年份结果。
代码实现
假设你的DataFrame名为df,且索引是datetime类型:
import pandas as pd # 确保索引是datetime类型(如果还不是的话) df.index = pd.to_datetime(df.index) # 先对索引排序,确保取到的是最后一个日期(可选,但推荐) df = df.sort_index() # 筛选7月的日期 july_indices = df.index[df.index.month == 7] # 按年份分组,提取每组的最大日期 last_july_workdays = july_indices.groupby(july_indices.year).max()
场景验证
- 覆盖2017-2022且每年7月有数据:分组后会得到6个年份对应的最后一个7月工作日;
- 某年份无7月数据(如2021年):该年份会被自动排除,结果仅包含5个日期;
- 仅含2021年7月1日:分组后仅返回该日期。
补充说明
如果你的日期序列中包含非工作日(但你只需要工作日),可以先过滤掉非工作日再执行上述步骤:
# 先筛选工作日(周一至周五) workday_indices = df.index[df.index.weekday < 5] # 再筛选7月的工作日 july_workdays = workday_indices[workday_indices.month == 7] # 分组取最大日期 last_july_workdays = july_workdays.groupby(july_workdays.year).max()
内容的提问来源于stack exchange,提问作者Haikal Yeo
相关产品推荐
相关产品推荐

