下面是我在Pandas 身上的离群点检测代码.我正在滚动窗口15,我想要做的是在窗口5,其中这个窗口是基于星期几的中心日期,即,如果中心是星期一,采取2倒退星期一和2向前星期一.滚动版对此没有任何支持.怎么办?
import pandas as pd
import numpy as np
np.random.seed(0)
dates = pd.date_range(start='2022-01-01', end='2023-12-31', freq='D')
prices1 = np.random.randint(10, 100, size=len(dates))
prices2 = np.random.randint(20, 120, size=len(dates)).astype(float)
data = {'Date': dates, 'Price1': prices1, 'Price2': prices2}
df = pd.DataFrame(data)
r = df.Price1.rolling(window=15, center=True)
price_up, price_low = r.mean() + 2 * r.std(), r.mean() - 2 * r.std()
mask_upper = df['Price1'] > price_up
mask_lower = df['Price1'] < price_low
df.loc[mask_upper, 'Price1'] = r.mean()
df.loc[mask_lower, 'Price1'] = r.mean()