带有" 3期的新专栏 - 简单移动平均线"

时间:2018-04-07 22:12:33

标签: python pandas

                      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分组,A日期时间列分组。如果可能,请使用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

1 个答案:

答案 0 :(得分:1)

试试吧:

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