用数据交集填充数组(固定窗口大小)



我有从 1 到 30 的数字,我把它们放在固定 lenth=10 的数组中这是我最初拥有的:

1  2  3  4  5  6  7  8  9  10
11 12 13 14 15 16 17 18 19 20
21 22 23 24 25 26 27 28 29 30

我需要的是固定大小的window=7,应该有数据交集,这样我就有5行而不是3行(1-10、8-17、15-24、22-30、29-30(:

1   2   3   4   5   6   7   8   9  10
8   9  10  11  12  13  14  15  16  17
15  16 17  18  19  20  21  22  23  24
22  23 24  25  26  27  28  29  30   0
29  30  0   0   0   0   0   0   0   0

我不知道如何实现这个...有人可以帮我吗?提前谢谢你!

这就是

我想到的方法

Newdf=pd.DataFrame(data=df.values.ravel(),index=np.arange(len(df.values.ravel()))//7)
n=10-7
s=Newdf.groupby(level=0)[0].apply(list).apply(pd.Series)
s
Out[824]:
      0     1     2     3     4     5     6
0   1.0   2.0   3.0   4.0   5.0   6.0   7.0
1   8.0   9.0  10.0  11.0  12.0  13.0  14.0
2  15.0  16.0  17.0  18.0  19.0  20.0  21.0
3  22.0  23.0  24.0  25.0  26.0  27.0  28.0
4  29.0  30.0   NaN   NaN   NaN   NaN   NaN
pd.concat([s,s.iloc[:,:n].shift(-1)],1).fillna(0)
Out[832]: 
      0     1     2     3     4     5     6     0     1     2
0   1.0   2.0   3.0   4.0   5.0   6.0   7.0   8.0   9.0  10.0
1   8.0   9.0  10.0  11.0  12.0  13.0  14.0  15.0  16.0  17.0
2  15.0  16.0  17.0  18.0  19.0  20.0  21.0  22.0  23.0  24.0
3  22.0  23.0  24.0  25.0  26.0  27.0  28.0  29.0  30.0   0.0
4  29.0  30.0   0.0   0.0   0.0   0.0   0.0   0.0   0.0   0.0

最新更新