У меня есть фреймворк со следующими столбцами:
name, date, day_index, value
Я хочу добавить 4-й столбец в тот же фрейм данных, который представляет собой экспоненциально взвешенное скользящее среднее 3-го столбца (значения) для каждого имени, отсортированного по первой дате, а затем по day_index. Я могу сгенерировать это как серию, используя следующий код.
df.sort_values(['date','day_index'],inplace=True)
ecw_series = df.groupby('name').apply(lambda x:
x["value"].ewm(halflife=2).mean())
Однако, если я попытаюсь напрямую добавить это в исходный фрейм данных, я получу следующую ошибку:
df['ecw'] = df.groupby('name').apply(lambda x:
x["value"].ewm(halflife=2).mean())
incompatible index of inserted column with frame index
И если я попытаюсь объединить серию с фреймом данных, я получу следующую ошибку:
df['index'] = df.index
df = df.merge(ecw_series, left_on=['name','index'],right_index=True)
can not merge DataFrame with instance of type <class
'pandas.core.series.Series'
На этом этапе я рассматривал преобразование серии в фрейм данных, а затем слияние. Но я уверен, что должен быть способ получше.