在python中寻找更好的方法使财政年度摆脱时间戳

2024-09-27 18:24:28 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图让财政年度从以下数据的“RequestDate”列中删除

我使用了以下代码,但正在寻找更好的方法:

import pandas as pd
import numpy as np
import datetime as datetime

df = pd.read_csv('test.csv')

df['CalendarYear'] = df['RequestDate'].dt.year
df['Month'] = df.RequestDate.dt.month
c = pd.to_numeric(df['CalendarYear'])
df['RequestFY'] = np.where(df['Month'] >= 10, c+1, c)
df.drop(['Month', 'CalendarYear'], axis=1, inplace=True)


Before: 
Index   RequestDate     
 0        2019-05-01     
 1        2018-08-02       
 2        2016-01-01       
 3        2015-03-01       
 4        2005-02-01    
 5        2005-10-01

 After:
Index   RequestDate         RequestFY
 0        2019-05-01        2019
 1        2018-08-02        2018
 2        2016-01-01        2016
 3        2015-03-01        2015
 4        2005-02-01        2005
 5        2005-10-01        2006

Tags: csv数据importdfdatetimeindexasnp
3条回答

熊猫对这件事有一个qyear{a1}

您可以在Quarter上使用dt.qyear

df['RequestFY'] = df.RequestDate.dt.to_period('Q-SEP').dt.qyear

输出:

   Index RequestDate  RequestFY
0      0  2019-05-01       2019
1      1  2018-08-02       2018
2      2  2016-01-01       2016
3      3  2015-03-01       2015
4      4  2005-02-01       2005
5      5  2005-10-01       2006

您没有指定会计年度的开始时间。假设它从July 1st开始运行到June 3oth,请尝试

 df['RequestFY']= pd.to_datetime(df['RequestDate']).apply(pd.Period, freq='A-JUL')#Fiscal year running from July to June

Index   RequestDate RequestFY
0   0   2019-05-01  2019
1   1   2018-08-02  2019
2   2   2016-01-01  2016
3   3   2015-03-01  2015
4   4   2005-02-01  2005
5   5   2005-10-01  2006

相关问题 更多 >

    热门问题