我正在研究日期和财政年度。 我的工作数据集包含上万行日期。 我想创建一个新列来标识季节或FY。 示例数据帧如下:
df = pd.DataFrame()
df['date'] = ['10/08/2018','12/09/2018','15/08/2017','16/05/2018']
我想要做的是根据日期范围创建一个新的季节列。 例如, 如果日期的月份是从8月到6月,则将其视为季节。 这意味着日期范围是2005年1月8日至2006年6月30日,该季节将是2005-06。
对于示例日期框架,预期输出如下:
date season
10/082018 2018-19
12/09/2018 2018-19
15/08/2017 2017-18
16/05/2018 2017-18
以下是我的预期输出:
我将如何定义范围和季节? 谢谢,
Zep。
答案 0 :(得分:1)
转换为字符串后,可以使用基于月份的条件并连接日期的年份部分
df.date = pd.to_datetime(df.date, format = '%d/%m/%Y')
cond = df.date.dt.month >=8
df['season'] = np.where(cond, df.date.dt.year.apply(str) + '-' + (df.date.dt.year+1).apply(str).str[2:], (df.date.dt.year-1).apply(str) + '-' + df.date.dt.year.apply(str).str[2:])
date season
0 2018-08-10 2018-19
1 2018-09-12 2018-19
2 2017-08-15 2017-18
3 2018-05-16 2017-18