Сначала создайте DataFrame с диапазонами месяцев каждого квартала в текущем DataFrame:
m = pd.DataFrame([range(i*3-2, 3*i+1) for i in df.quater], index=df.quater)
0 1 2
quater
1 1 2 3
2 4 5 6
4 10 11 12
Теперь присоединитесь и сложите:
df.set_index('quater').join(m.stack().reset_index(1, drop=True).rename('month'))
id name value year month
quater
1 1 an 2.3 2012 1
1 1 an 2.3 2012 2
1 1 an 2.3 2012 3
2 2 yu 3.5 2012 4
2 2 yu 3.5 2012 5
2 2 yu 3.5 2012 6
4 3 ij 3.1 2013 10
4 3 ij 3.1 2013 11
4 3 ij 3.1 2013 12