如何从pandas DataFrame的日期列中提取澳大利亚财年
pandas生成澳大利亚财年标识列
核心逻辑
澳大利亚财年从每年7月1日开始到次年6月30日结束,计算规则为:
- 若日期月份≥7,财年年份 = 日期所属年份 + 1
- 若日期月份<7,财年年份 = 日期所属年份
实现方法
首先确保待处理的date列为pandas datetime类型:
import pandas as pd # 类型转换非必要但建议执行,避免非日期格式数据报错 df['date'] = pd.to_datetime(df['date'])
方法1:向量化运算(推荐,大数据量下性能更高)
直接通过pandas datetime内置属性计算,一行代码完成:
# 生成带FY前缀的财年标识,如FY 2019 df['au_fiscal_year'] = 'FY ' + (df['date'].dt.year + (df['date'].dt.month >= 7).astype(int)).astype(str) # 如果只需要纯数字年份,可使用以下代码 df['au_fiscal_year_num'] = df['date'].dt.year + (df['date'].dt.month >= 7).astype(int)
方法2:自定义函数+apply(适合需要扩展复杂逻辑的场景)
def cal_au_fiscal_year(date): if date.month >= 7: return f"FY {date.year + 1}" return f"FY {date.year}" df['au_fiscal_year'] = df['date'].apply(cal_au_fiscal_year)
效果验证
对应示例的计算结果如下:
| date | au_fiscal_year |
|---|---|
| 2019-06-10 | FY 2019 |
| 2019-07-05 | FY 2020 |
内容的提问来源于stack exchange,提问作者Ryan
相关产品推荐
相关产品推荐

