Вы можете получить среднюю цену за каждый месяц, используя groupby
:
g = df.groupby("months")["price"].mean()
Затем вы можете создать новые столбцы:
for month, avg in g.iteritems():
df["average_{}".format(month)] = avg
Пример с фиктивными данными:
import pandas as pd
df = pd.DataFrame({'months':['Jan', 'Feb', 'Feb', 'Mar', 'Mar', 'Mar'],
'price':[1, 2, 3, 4, 5, 6]})
Результат:
months price average_Feb average_Jan average_Mar
0 Jan 1 2.5 1.0 5.0
1 Feb 2 2.5 1.0 5.0
2 Feb 3 2.5 1.0 5.0
3 Mar 4 2.5 1.0 5.0
4 Mar 5 2.5 1.0 5.0
5 Mar 6 2.5 1.0 5.0