У меня есть датафрейм со следующими столбцами:
name, date, day_index, value
Я хочу добавить 4-й столбец к тому же фрейму данных, который является экспоненциально взвешенным скользящим средним 3-го столбца (значения) для каждого имени, отсортированный по первой дате, а затем по дневному индексу. Я могу сгенерировать это как серию, используя следующий код.
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'
В этот момент я рассматривал возможность преобразования ряда в кадр данных, а затем слияния. Но я уверен, что должен быть лучший путь.