首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >根据过去一年的平均数据(时间序列数据)迭代生成新列

根据过去一年的平均数据(时间序列数据)迭代生成新列
EN

Stack Overflow用户
提问于 2020-03-03 11:41:57
回答 2查看 38关注 0票数 0

假设我有一个时间序列数据帧,如下所示:

(附注:下面的值不是我的真实数据,我的真实数据是2010年到2018年)

代码语言:javascript
复制
       forecast
    Jan-10  1
    Feb-10  1
    Mar-10  1
    Apr-10  1
    May-10  1
    Jun-10  1
    Jul-10  1
    Aug-10  1
    Sep-10  1
    Oct-10  1
    Nov-10  1
    Dec-10  1
    Jan-11  2
    Feb-11  2
    Mar-11  2
    Apr-11  2
    May-11  2
    Jun-11  2
    Jul-11  2
    Aug-11  2
    Sep-11  2
    Oct-11  2
    Nov-11  2
    Dec-11  2
    Jan-12  3
    Feb-12  3
    Mar-12  3
    Apr-12  3
    May-12  3
    Jun-12  3
    Jul-12  3
    Aug-12  3
    Sep-12  3
    Oct-12  3
    Nov-12  3
    Dec-12  3

我想创建一个名为"avg_recent_year“的新专栏,它是最近一年的平均数据(比它高出12个月的平均数据)。

代码语言:javascript
复制
    forecast    avg_recent_year
Jan-10     1    
Feb-10     1    
Mar-10     1    
Apr-10     1    
May-10     1    
Jun-10     1    
Jul-10     1    
Aug-10     1    
Sep-10     1    
Oct-10     1    
Nov-10     1    
Dec-10     1    
Jan-11     2             1
Feb-11     2             1
Mar-11     2             1
Apr-11     2             1
May-11     2             1
Jun-11     2             1
Jul-11     2             1
Aug-11     2             1
Sep-11     2             1
Oct-11     2             1
Nov-11     2             1
Dec-11     2             1
Jan-12     3             2
Feb-12     3             2
Mar-12     3             2
Apr-12     3             2
May-12     3             2
Jun-12     3             2
Jul-12     3             2
Aug-12     3             2
Sep-12     3             2
Oct-12     3             2
Nov-12     3             2
Dec-12     3             2

我不确定如何编写python代码来解决这个问题,因为我有9年的数据,所以我不能在没有迭代的情况下手动完成,否则它将是一个很长的代码。

有人能帮我解决这个问题吗?

EN

回答 2

Stack Overflow用户

发布于 2020-03-03 12:04:19

这就是你要找的

代码语言:javascript
复制
>>> df = pd.DataFrame({'forecast': [ i for i in range(25)]})
>>> df
    forecast
0          0
1          1
2          2
3          3
4          4
5          5
6          6
7          7
8          8
9          9
10        10
11        11
12        12
13        13
14        14
15        15
16        16
17        17
18        18
19        19
20        20
21        21
22        22
23        23
24        24
>>> df["avg_recent_year"] = df["forecast"].rolling(12).mean()
>>> df
    forecast  avg_recent_year
0          0              NaN
1          1              NaN
2          2              NaN
3          3              NaN
4          4              NaN
5          5              NaN
6          6              NaN
7          7              NaN
8          8              NaN
9          9              NaN
10        10              NaN
11        11              5.5
12        12              6.5
13        13              7.5
14        14              8.5
15        15              9.5
16        16             10.5
17        17             11.5
18        18             12.5
19        19             13.5
20        20             14.5
21        21             15.5
22        22             16.5
23        23             17.5
24        24             18.5
票数 1
EN

Stack Overflow用户

发布于 2020-03-03 12:05:07

您可以使用滚动平均值来实现这一点(请参阅https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.rolling.html):

代码语言:javascript
复制
df['avg_recent_year'] = df['forecast'].rolling(12).mean()
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60499763

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档