qs = df['Quarter'].str.replace(r'(Q\d) (\d+)', r'\2-\1') qs 0 1996-Q3 1 1996-Q4 2 1997-Q1 Name: Quarter, dtype: object df['date'] = pd.PeriodIndex(qs, freq='Q').to_timestamp() df Quarter date 0 Q3 1996 1996-07-01 1 Q4 1996 1996-10-01 2 Q1 1997 1997-01-01for m in range(1, 13): print (m-1)//3 + 1, print # prints 1 1 1 2 2 2 3 3 3 4 4 4