基于'date'列的月份和年份的列值

  • 本文关键字:date 基于 python pandas date
  • 更新时间 :
  • 英文 :


我正在研究一个25000行以上的数据框架。数据跨度为2012年至2021年。在这里,我有一个专栏日期。我想创建另一个名为assessmentYear(AY)的列,其中应该使用日期列中的年和月来创建值。每个课税年度从每年的10月开始,至次年5月结束。我用了pandas。dt。年,还有熊猫。Month_name用于检索这些值以分隔列。但是,我无法根据评估周期在AY列(AY1, AY2, AY3..)中存储值。

我在下面的代码片段中分享日期列作为字典的示例。

{
1: '2019-09-19',
2: '2019-09-20',
3: '2019-10-29',
4: '2019-10-30',
5: '2020-04-01',
6: '2020-04-02',
7: '2020-04-03',
8: '2020-04-04',
9: '2020-11-05',
10: '2020-11-06',
11: '2020-11-07',
12: '2020-11-08',
13: '2020-11-09',
14: '2021-04-10',
15: '2021-04-11',
16: '2021-04-12',
}

在上面的字典中向上到第2行应该分配一个值AY1,然后向上到它是AY2,剩下的行应该分配一个值AY3在列AY。而不是依赖于索引,我希望实现这个基于日期列,因为日期是动态变化的真实数据集。如果你能帮助我处理这个问题,我将不胜感激。

使用to_period转换为季度,qyear转换为财政年度:

fyear = pd.to_datetime(df['Date']).dt.to_period('Q-SEP').dt.qyear
df['AY'] = 'AY' + df.groupby(fyear).ngroup().add(1).astype(str)
print(df)
# Output
Date   AY
1   2019-09-19  AY1
2   2019-09-20  AY1
3   2019-10-29  AY2
4   2019-10-30  AY2
5   2020-04-01  AY2
6   2020-04-02  AY2
7   2020-04-03  AY2
8   2020-04-04  AY2
9   2020-11-05  AY3
10  2020-11-06  AY3
11  2020-11-07  AY3
12  2020-11-08  AY3
13  2020-11-09  AY3
14  2021-04-10  AY3
15  2021-04-11  AY3
16  2021-04-12  AY3

相关内容

  • 没有找到相关文章

最新更新