小编r r*_*ram的帖子

Pandas 修改滚动平均值

下面是我在 pandas 中的异常值检测代码。我正在滚动 15 个窗口,我想要的是滚动 5 个窗口,其中该窗口基于居中日期的星期几,即如果中心是星期一,则在星期一向后移动 2 个,在星期一向前移动 2 个。Rolling 对此没有任何支持。怎么做?

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'] …
Run Code Online (Sandbox Code Playgroud)

python numpy dataframe pandas

2
推荐指数
1
解决办法
65
查看次数

标签 统计

dataframe ×1

numpy ×1

pandas ×1

python ×1