1

我有一个以数据帧格式表示的时间序列数据,如下所示:

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) + ...

有没有更优雅的方法来实现这一点?

4

0 回答 0