Я хочу выполнить скользящую медиану в столбце цен за 4 дня назад, данные будут сгруппированы по дате. Итак, в основном я хочу взять цены за данный день и все цены за 4 дня назад и вычислить медиану из этих значений.
Вот примерные данные:
id date price
1637027 2020-01-21 7045204.0
280955 2020-01-11 3590000.0
782078 2020-01-28 2600000.0
1921717 2020-02-17 5500000.0
1280579 2020-01-23 869000.0
2113506 2020-01-23 628869.0
580638 2020-01-25 650000.0
1843598 2020-02-29 969000.0
2300960 2020-01-24 5401530.0
1921380 2020-02-19 1220000.0
853202 2020-02-02 2990000.0
1024595 2020-01-27 3300000.0
565202 2020-01-25 3540000.0
703824 2020-01-18 3990000.0
426016 2020-01-26 830000.0
Я был близок к объединению rolling и groupby:
df.groupby('date').rolling(window = 4, on = 'date')['price'].median()
Но это, кажется, добавляет одну строку для каждого значения индекса, и по определению медианы я не могу каким-то образом объединить эти строки, чтобы получить один результат для каждой строки.
Результат теперь выглядит так:
date date
2020-01-10 2020-01-10 NaN
2020-01-10 NaN
2020-01-10 NaN
2020-01-10 3070000.0
2020-01-10 4890000.0
...
2020-03-11 2020-03-11 4290000.0
2020-03-11 3745000.0
2020-03-11 3149500.0
2020-03-11 3149500.0
2020-03-11 3149500.0
Name: price, Length: 389716, dtype: float64
Кажется, он просто удалил 3 первых значения, а затем просто напечатал значение цены.
Можно ли получить одно запаздывающее/движущееся медианное значение за одну дату?