我有一个以数据帧格式表示的时间序列数据,如下所示:
U1 U2 U3 U4 U5 U6 U7 U8 U9 U10 U11 U12 U13 U14 U15 U16 ... U96
1 2 3 null 4 5 6 7 8 9 10 11 12 13 14 15 ... 95
...
可以看出U4
有一个空值,我想用 6 个附近值的平均值替换它:U1
, U2
, U3
, U5
, U6
, U7
(前面三个值,后面三个值,如果U1
包含 null,则后面有 6 个值。如果U2
包含 null,然后是前面的 1 个值和后面的 5 个值。等等)
我可以像下面这样手动实现它:
for i in range(len(df)):
for j in range(1,97):
if df.iat[i,j] == None:
if j == 1:
df.iat[i,j] = df._get_value(i,2) + df._get_value(i,3) + df._get_value(i,4) + ...
elif j == 2:
df.iat[i,j] = df.get_value(i,1) + df.get_value(i,3) + df.get_value(i,4) + ...
elif j == 3:
df.iat[i,j] = df.get_value(i,1) + df.get_value(i,2) + df.get_value(i,4) + ...
else:
df.iat[i,j] = df.get_value(i,j-3) + df.get_value(i,j-2) + df.get_value(i,j-1) + ...
有没有更优雅的方法来实现这一点?