Python如何实现财年起始为7月的财周编号计算?
财周编号计算实现方案
计算逻辑
- 先判定每个日期对应的财年起始日:若日期月份≥7,财年起始日为当年7月1日;否则为上一年7月1日
- 计算当前日期与财年起始日的间隔天数,向下取整得到周数差后加1,即为该日期对应的财周编号
- 可根据公司周起始规则(周一/周日)微调偏移量适配业务要求
实现代码
通用版(易理解,适合中小数据量)
import pandas as pd def get_fiscal_week(date): # 确定当前日期对应的财年起始日 if date.month >= 7: fiscal_start = pd.Timestamp(year=date.year, month=7, day=1) else: fiscal_start = pd.Timestamp(year=date.year - 1, month=7, day=1) # 计算间隔周数,加1得到财周编号(默认周起始为周一) days_diff = (date - fiscal_start).days return (days_diff // 7) + 1 # 应用到数据集生成财周字段 dataset['Fiscal Week'] = dataset['Date'].apply(get_fiscal_week)
高性能向量化版(适合百万级以上大数据量)
# 批量生成所有日期对应的财年起始日 fiscal_start = pd.to_datetime( (dataset['Date'].dt.year - (dataset['Date'].dt.month < 7)).astype(str) + '-07-01' ) # 批量计算财周 dataset['Fiscal Week'] = ((dataset['Date'] - fiscal_start).dt.days // 7) + 1
验证说明
测试示例:2021年7月1日对应FY22财周1,2021年7月8日对应财周2,2022年6月30日对应财周52(闰年为53),完全匹配你司财年规则。
若公司周统计以周日为起始,可将计算逻辑调整为(days_diff + 1) //7 +1适配规则。
内容的提问来源于stack exchange,提问作者Sajeev A
相关产品推荐
相关产品推荐

