我有从 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