У меня есть датафрейм, который выглядит следующим образом.
symbol Range
Date
2018-08-16 spy 1.5
2018-08-17 spy 1.2
2018-08-16 spy 1.3
2018-08-17 spy 1.6
2017-07-17 spy 1.1
2017-07-18 spy 1.9
2018-08-16 nflx 4.5
2018-08-17 nflx 5.2
Я добавил столбец, который находит 15-й процентиль диапазона, выполнив следующее:
df['Range_quantile'] = df.groupby(['symbol'])['Range'].transform(lambda x: np.percentile(x.unique(), 15))
Начиная с данной строки, как применить ту же функцию только к последним 20 строкам (внутри группы) на скользящей основе, сгруппированных по symbol
, а затем добавить выходные данные в виде столбца (Range_quantile_rolling
) к кадру данных? Мой пример применяет функцию lambda x: np.percentile(x.unique(), 15)
ко всему столбцу Range
.
Например, если я добавляю функцию в последние 3 строки в groupby, она может выглядеть следующим образом:
symbol Range Range_Quantile_Rolling_3
Date
2018-08-16 spy 1.5 NA
2018-08-17 spy 1.2 NA
2018-08-16 spy 1.3 1.21
2018-08-17 spy 1.6 1.25
2017-07-17 spy 1.1 1.15
2017-07-18 spy 1.9 1.3
2018-08-16 nflx 4.5 NA
2018-08-17 nflx 5.2 NA