Follow

Keep Up to Date with the Most Important News

By pressing the Subscribe button, you confirm that you have read and are agreeing to our Privacy Policy and Terms of Use
Contact

How to define custom fiscal quarters in pandas?

I have a dataframe shown below

df = pd.DataFrame(
    {'stud_id' : [101, 101, 101, 101, 
                  101, 101, 101, 101],
     'ques_date' : ['13/11/2020', '10/1/2018','11/11/2017', '27/03/2016', 
                '13/05/2010',  '10/11/2008','11/1/2007', '27/02/2006']})

Basically, I would like to do the below

a) Get the fiscal quarter for each ques_date

MEDevel.com: Open-source for Healthcare and Education

Collecting and validating open-source software for healthcare, education, enterprise, development, medical imaging, medical records, and digital pathology.

Visit Medevel

However, our company follows their own definition for quarter which is given below

Q1 - Oct to Dec
Q2 - Jan to Mar
Q3 - Apr to Jun
Q4 - July - Sep

I was trying something like below

df['act_qtr'] = df['ques_date'].dt.to_period('Q')
df['custom_qtr'] = np.where(df['act_qtr'] == 'Q1','Q2',(df['act_qtr'] == 'Q2', 'Q3',(df['act_qtr'] == 'Q3', 'Q4', (df['act_qtr'] == 'Q4', 'Q1'))))

But this is not elegant and efficient.

Is there any pythonic or better way to do this?

I expect my output to be like below

enter image description here

>Solution :

One idea is add 1 for next quarter, then use Series.dt.strftime for custom string Q1, Q2, Q3, Q4:

df['ques_date'] = pd.to_datetime(df['ques_date'], dayfirst=True)

df['act_qtr'] = df['ques_date'].dt.to_period('Q').add(1).dt.strftime('Q%q')
print (df)
   stud_id  ques_date act_qtr
0      101 2020-11-13      Q1
1      101 2018-01-10      Q2
2      101 2017-11-11      Q1
3      101 2016-03-27      Q2
4      101 2010-05-13      Q3
5      101 2008-11-10      Q1
6      101 2007-01-11      Q2
7      101 2006-02-27      Q2
Add a comment

Leave a Reply

Keep Up to Date with the Most Important News

By pressing the Subscribe button, you confirm that you have read and are agreeing to our Privacy Policy and Terms of Use

Discover more from Dev solutions

Subscribe now to keep reading and get access to the full archive.

Continue reading