You do not need to use unnecessary loops or large libraries like pandas for this. You can do this with simple integer division / arithmetic and just a datetime library (although using dateutil leads to cleaner code).
import datetime def getQuarterStart(dt=datetime.date.today()): return datetime.date(dt.year, (dt.month - 1) // 3 * 3 + 1, 1)
Output:
>>> d1=datetime.date(2017,2,15) >>> d2=datetime.date(2017,1,1) >>> d3=datetime.date(2017,10,1) >>> d4=datetime.date(2017,12,31) >>> >>> getQuarterStart(d1) datetime.date(2017, 1, 1) >>> getQuarterStart(d2) datetime.date(2017, 1, 1) >>> getQuarterStart(d3) datetime.date(2017, 10, 1) >>> getQuarterStart(d4) datetime.date(2017, 10, 1) >>> getQuarterEnd1(d1) datetime.date(2017, 3, 31) >>> getQuarterEnd1(d2) datetime.date(2017, 3, 31) >>> getQuarterEnd1(d3) datetime.date(2017, 12, 31) >>> getQuarterEnd1(d4) datetime.date(2017, 12, 31) >>> getQuarterEnd2(d1) datetime.date(2017, 3, 31) >>> getQuarterEnd2(d2) datetime.date(2017, 3, 31) >>> getQuarterEnd2(d3) datetime.date(2017, 12, 31) >>> getQuarterEnd2(d4) datetime.date(2017, 12, 31)
source share