“三期简单移动平均线”新栏目

2024-05-15 02:42:58 发布

您现在位置:Python中文网/ 问答频道 /正文

                      A         B   C
0   2002-01-13 10:00:00      Jack  10
1   2002-01-13 10:00:00    Hellen  10
2   2002-01-13 12:00:00      Sibl  14
3   2002-01-13 12:00:00     Steve  14
4   2002-01-18 10:00:00    Ridley  38
5   2002-01-18 10:00:00     Scott  38
6   2002-01-18 12:00:00     Rambo  52
7   2002-01-18 12:00:00     Peter  52
8   2002-02-09 08:00:00      Brad  90
9   2002-02-09 08:00:00  Victoria  90
10  2002-02-09 14:00:00  Caroline   8
11  2002-02-09 14:00:00    Andrea   8

我想创建一个新的df['D'],其“3周期-简单移动平均值”为C,按Adatetime列分组。如果可能,使用convolve

输出应为:

                      A         B   C      D
0   2002-01-13 10:00:00      Jack  10   
1   2002-01-13 10:00:00    Hellen  10
2   2002-01-13 12:00:00      Sibl  14
3   2002-01-13 12:00:00     Steve  14
4   2002-01-18 10:00:00    Ridley  38  20.66
5   2002-01-18 10:00:00     Scott  38  20.66
6   2002-01-18 12:00:00     Rambo  52  34.66
7   2002-01-18 12:00:00     Peter  52  34.66
8   2002-02-09 08:00:00      Brad  90  60.00
9   2002-02-09 08:00:00  Victoria  90  60.00
10  2002-02-09 14:00:00  Caroline   8  50.00
11  2002-02-09 14:00:00    Andrea   8  50.00

Tags: dfscottpetersteve平均值jackandrearambo
1条回答
网友
1楼 · 发布于 2024-05-15 02:42:58

让我们试试:

df['D'] = df.A.map(df.groupby('A')['C'].mean().rolling(3).mean())

输出:

                      A         B   C          D
0   2002-01-13 10:00:00      Jack  10        NaN
1   2002-01-13 10:00:00    Hellen  10        NaN
2   2002-01-13 12:00:00      Sibl  14        NaN
3   2002-01-13 12:00:00     Steve  14        NaN
4   2002-01-18 10:00:00    Ridley  38  20.666667
5   2002-01-18 10:00:00     Scott  38  20.666667
6   2002-01-18 12:00:00     Rambo  52  34.666667
7   2002-01-18 12:00:00     Peter  52  34.666667
8   2002-02-09 08:00:00      Brad  90  60.000000
9   2002-02-09 08:00:00  Victoria  90  60.000000
10  2002-02-09 14:00:00  Caroline   8  50.000000
11  2002-02-09 14:00:00    Andrea   8  50.000000

相关问题 更多 >

    热门问题