根据熊猫的日期范围创建风云

时间:2018-11-13 04:58:09

标签: python pandas date date-range

我正在研究日期和财政年度。 我的工作数据集包含上万行日期。 我想创建一个新列来标识季节或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

以下是我的预期输出:

enter image description here

我将如何定义范围和季节? 谢谢,

Zep。

1 个答案:

答案 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