Я новичок в Pandas и несколько потерял, что здесь делать. У меня есть dataframe импортированного из CSV, который (сильно упрощенный) выглядеть следующим образом:Pandas groupby - Увеличивает среднее значение по столбцу
date = ['2013-08-10','2013-08-10','2013-08-10','2013-08-10','2013-08-10',
'2013-08-10','2013-08-10','2013-08-10','2013-08-10','2013-08-10']
event = ['213','213','213','213','214','214','214','215','215','215']
side = ['A','B','B','B','A','B','A','B','A','B',]
value = [0.193,0.193,0.092,0.027,0.027,0.058,0.027,0.079,0.193,0.159]
df = pd.DataFrame(zip(event,date,side,value),
columns=['event','date','side','value'])
event date side value
0 213 2013-08-10 A 0.193
1 213 2013-08-10 B 0.193
2 213 2013-08-10 B 0.092
3 213 2013-08-10 B 0.027
4 214 2013-08-10 A 0.027
5 214 2013-08-10 B 0.058
6 214 2013-08-10 A 0.027
7 215 2013-08-10 B 0.079
8 215 2013-08-10 A 0.193
9 215 2013-08-10 B 0.159
То, что я хочу, чтобы суммировать значения, соответствующие каждую сторону для каждого события. Это я достиг с GroupBy:
groupby = df.groupby(['event','side']).sum()
value
event side
213 A 0.193
B 0.312
214 A 0.054
B 0.058
215 A 0.193
B 0.238
Но я также хочу, чтобы добавить новый столбец с расширяющейся средней для каждой из сторон, как это:
value
event side roll_mean
213 A 0.193 0
B 0.312 0
214 A 0.054 0.193
B 0.058 0.312
215 A 0.193 0.124
B 0.238 0.185
Обратите внимание, что каждое событие имеет две стороны, но это не всегда A и B. То, что я хочу, это что-то вроде функции mean.if от excel, которая вычисляет расширяющееся среднее для всех значений текущей стороны, применяемое ко всем предыдущим строкам. Любая помощь по этому поводу будет оценена по достоинству.
какое окно вы думаете о скользящем средстве? И почему бы скользящее среднее было равным нулю по краям? Разве это не было бы нулевым, как не вычислимым? –
Окно будет любым предыдущим событием, и да оно должно быть нулевым. –