Я хотел бы взять скользящую статистику за фиксированный период, скажем, за 5 дней, например,
DATE Price
ID
AAPL US Equity 2015-01-02 109.33
AAPL US Equity 2015-01-05 106.25
AAPL US Equity 2015-01-06 106.26
AAPL US Equity 2015-01-07 107.75
AAPL US Equity 2015-01-08 111.89
AAPL US Equity 2015-01-09 112.01
AAPL US Equity 2015-01-12 109.25
AAPL US Equity 2015-01-13 110.22
AAPL US Equity 2015-01-14 109.80
AAPL US Equity 2015-01-15 106.82
при
df['Average']=df['Price'].rolling(5).mean()
, чтобы дать
DATE Price Average
ID
AAPL US Equity 2015-01-02 109.33 NaN
AAPL US Equity 2015-01-05 106.25 NaN
AAPL US Equity 2015-01-06 106.26 NaN
AAPL US Equity 2015-01-07 107.75 NaN
AAPL US Equity 2015-01-08 111.89 108.296
AAPL US Equity 2015-01-09 112.01 108.832
AAPL US Equity 2015-01-12 109.25 109.432
AAPL US Equity 2015-01-13 110.22 110.224
AAPL US Equity 2015-01-14 109.80 110.634
AAPL US Equity 2015-01-15 106.82 109.620
как Могу ли я изменить, чтобы применить любую функцию, чтобы получить любую скользящую статистику за фиксированный период, но для первых нескольких строк по доступным данным ie для первого ряда будет средняя цена за первый день, для первых двух строк среднее будет за первые два дня et c
Я знаю, что могу использовать iterrows для достижения этой цели в этом случае со «средним» значением, но в идеале я хотел бы использовать его для любого показателя, например, quantile, std et c
Что-то вроде
df['Average']=my_rolling_stat(df['Price'],period=5,function='mean')
df['Stdev']=my_rolling_stat(df['Price'],period=10,function='std')
df['95_Perc']=my_rolling_stat(df['Price'],period=10,function='quantile',quantile_value=0.95)
Заранее спасибо