在潘达斯上创建一个不断变化的窗口的滚动均值。

问题描述 投票:0回答:1

我有一个Pandas数据框架,如下图所示。我想创建一个7天的温度滚动平均值。我知道如何做,如果它是一个读数,每天()。dataset['rolling_temp'] = dataset.iloc[:,3].rolling(window=7).mean()但问题是每天的读数是随机的,即1天可能是多行。 任何帮助将是非常感激

    day   temperature 
1     1          18.0           
2     1          19.0
3     2          18.0
4     3          17.0
5     4          18.5 
6     4          19.0
7     5          18.0
8     6          19.0
9     7          18.5
10    8          17.5
11    9          17.0
12   10          18.0
13   11          19.0
14   12          19.5
15   13          16.5
16   13          17.0
python pandas
1个回答
0
投票

不如做一个 .groupby 先做 .rolling? 这就解决了有多个日子的问题,并给你每天一个值。

dataset = dataset.groupby('day')['temperature'].mean().reset_index().iloc[:,3].rolling(window=7).mean()

0
投票

如果你把你的天数转换为适当的日期,并把它们做成索引,你应该能够产生滚动的统计数据。你必须包括月和年,所以如果你还没有存储这样的值,就添加额外的列,然后。

dataset['date'] = dataset[['year', 'month', 'day']].apply(lambda row: '{}-{}-{}'.format(row['year'], row['month'], row['day']), axis=1)
dataset.set_index('date', inplace=True')
dataset.temperature.rolling('7D', min_periods=1).mean()

请看下面的参考资料 本页.你也可以尝试重新采样索引。

dataset.temperature.resample('D').rolling('7D', min_periods=1).mean()

请注意,这可能无法与旧版本的pandas工作, 所以,如果你遇到错误,考虑升级到最新的稳定。

© www.soinside.com 2019 - 2024. All rights reserved.