我有一个像这样的熊猫数据框
>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个位置的滚动平均速度。但我想把更详细的情况写进去。在
leg
(它不考虑不同leg
中的行的速度。在我想根据可用行将滚动窗口从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
使用
rolling(5)
将得到每个组中除前4次外的所有结果。我们可以用扩展的mean
填充剩余值:相关问题 更多 >
编程相关推荐