python – 滚动时更改滚动窗口大小

我有像这样的熊猫数据框;

>df

leg    speed
  1       10
  1       11
  1       12
  1       13
  1       12
  1       15
  1       19
  1       12
  2       10
  2       10
  2       12
  2       15
  2       19
  2       11
  :        :

我想创建一个新的列roll_speed,它需要最后5个位置的滚动平均速度.但我想在其中加入更详细的条件.

> Groupby腿(它没有考虑不同腿的行速度.
>我希望根据可用行将滚动窗口从1更改为5.例如在leg == 1中,在第一行中只有一行要计算,所以滚动速度应该是10/1 = 10.对于第二行,只有两行可用于计算,滚动速度应该是是(10 11)/ 2 = 10.5.

leg    speed   roll_speed
  1       10           10    # 10/1
  1       11           10.5  # (10+11)/2
  1       12           11    # (10+11+12)/3
  1       13           11.5  # (10+11+12+13)/4
  1       12           11.6  # (10+11+12+13+12)/5
  1       15           12.6  # (11+12+13+12+15)/5
  1       19           14.2  # (12+13+12+15+19)/5
  1       12           14.2  # (13+12+15+19+12)/5
  2       10           10    # 10/1
  2       10           10    # (10+10)/2
  2       12           10.7  # (10+10+12)/3
  2       15           11.8  # (10+10+12+15)/4
  2       19           13.2  # (10+10+12+15+19)/5
  2       11           13.4  # (10+12+15+19+11)/5
  :        :           

我的尝试:

df['roll_speed'] = df.speed.rolling(5).mean()

但它只返回少于五行可用于计算的行的NA.我该如何解决这个问题?感谢您的任何帮助!

解决方法:

将参数min_periods设置为1

df['roll_speed'] = df.groupby('leg').speed.rolling(5, min_periods = 1).mean()\
.round(1).reset_index(drop = True)

    leg speed   roll_speed
0   1   10  10.0
1   1   11  10.5
2   1   12  11.0
3   1   13  11.5
4   1   12  11.6
5   1   15  12.6
6   1   19  14.2
7   1   12  14.2
8   2   10  10.0
9   2   10  10.0
10  2   12  10.7
11  2   15  11.8
12  2   19  13.2
13  2   11  13.4
上一篇:tensorflow的hello world


下一篇:[leetcode] 643. Maximum Average Subarray I