Как рассчитать std при расширении диапазона значений?
df = pd.DataFrame({'col': [0,1,5,3,2,4], 'past_std': [0.0, 0.5, 2.16, 1.92, 1.72, 1.71]})
Значения в колонке 'past_std' вычислены вручную, но надо определять это функцией.
Каждое значение - это std значений слева, но такой алгоритм.
0.0 - это std для [0],
0.5 - это std для [0, 1],
2.16 -это std для [0, 1, 5]
и так далее, то есть при расширении диапазона мы пересчитываем std.
Как получить во второй колонке значения std по такому алгоритму, но функцией?
Ответы (1 шт):
Автор решения: MaxU
→ Ссылка
решение:
df["new"] = df["col"].expanding().std(ddof=0)
результат:
In [98]: df
Out[98]:
col past_std new
0 0 0.00 0.000000
1 1 0.50 0.500000
2 5 2.16 2.160247
3 3 1.92 1.920286
4 2 1.72 1.720465
5 4 1.71 1.707825
PS стоит упомянуть что в Pandas метод std(ddof=1) параметр ddof=1 по умолчанию равен 1, тогда как в Numpy - ddof=0. Поэтому, чтобы получить такие же значения как у вас мне пришлось явно указать ddof=0