3

I have a dataset where the dates are between 5/1/2016 and 5/21/2016. I would like to create a new variable day_quarter which will be the correspondent day of the quarter. For example:

The first day in the Q2 is April 1st so, May 15th would be 45/91 for example.

Any ideas?

lizzie
  • 606
  • 6
  • 15

1 Answers1

2

Try this code:

import datetime
def day_in_quarter(date):
    q2 = (datetime.datetime.strptime("4/1/{0:4d}".format(date.year), "%m/%d/%Y")).timetuple().tm_yday
    q3 = (datetime.datetime.strptime("7/1/{0:4d}".format(date.year), "%m/%d/%Y")).timetuple().tm_yday
    q4 = (datetime.datetime.strptime("10/1/{0:4d}".format(date.year), "%m/%d/%Y")).timetuple().tm_yday

    cur_day =  date.timetuple().tm_yday
    if (date.month < 4):
        return cur_day
    elif (date.month < 7):
        return cur_day - q2 + 1    
    elif (date.month < 10):
        return cur_day - q3 + 1  
    else:
        return cur_day - q4 + 1          

print day_in_quarter(datetime.datetime.strptime("5/15/2016", "%m/%d/%Y"))
Serenity
  • 35,289
  • 20
  • 120
  • 115