【发布时间】:2021-06-19 10:21:06
【问题描述】:
我正在尝试使用以下 pandas 数据框计算 ewm:
| Parameter | new_file | EWM | |
|---|---|---|---|
| 0 | 495.56912 | 0 | 495.569120 |
| 1 | 494.51257 | 1 | 495.505727 |
| 2 | 493.65040 | 1 | 495.394407 |
| 3 | 492.95905 | 1 | 495.248286 |
| 4 | 492.31470 | 1 | 495.072271 |
| 5 | 491.66367 | 0 | 491.663670 |
| 6 | 491.05520 | 1 | 494.639001 |
| 7 | 490.38733 | 1 | 494.383901 |
我想要的是每次“new_file”列中的值为 0 时重置窗口。此数据框是从多个输入文件创建的,每次 new_file 列为 0 时,它都表示新文件的开始。因此,我不希望 EWM 使用上一个输入文件的最后一个值进行计算,我需要将其重置。
我创建 EWM 列的代码如下:
df['EWM'] = np.where(df[‘new_file’] ==1, df['Parameter'].ewm(alpha=0.06,adjust=False).mean() , df['Parameter'])
您可能可以从上面的数据框摘录中看到,计算的第 6 行不是作为新窗口开始时应有的值。它应该产生以下值(我从 excel 中获得):
| Parameter | new_file | EWM | |
|---|---|---|---|
| 0 | 495.56912 | 0 | 495.5691 |
| 1 | 494.51257 | 1 | 495.5057 |
| 2 | 493.6504 | 1 | 495.3944 |
| 3 | 492.95905 | 1 | 495.2483 |
| 4 | 492.3147 | 1 | 495.0723 |
| 5 | 491.66367 | 0 | 491.6637 |
| 6 | 491.0552 | 1 | 491.6272 |
| 7 | 490.38733 | 1 | 491.5528 |
【问题讨论】:
标签: python pandas window exponential