考虑数据帧
df
df = pd.DataFrame(np.arange(1, 73).reshape(-1, 3), columns=list('xyz'))
df
def windows(d, w, t):
r = np.arange(len(d))
s = r[::t]
z = list(zip(s, s + w))
f = '{0[0]}:{0[1]}'.format
g = lambda t: d.iloc[t[0]:t[1]]
return pd.concat(map(g, z), keys=map(f, z))
这将返回一个带有
pd.MultiIndex
我们可以用
loc
wdf = windows(df, 10, 5)
wdf.loc['0:10']
x y z
0 1 2 3
1 4 5 6
2 7 8 9
3 10 11 12
4 13 14 15
5 16 17 18
6 19 20 21
7 22 23 24
8 25 26 27
9 28 29 30
wdf.loc['15:25']
x y z
15 46 47 48
16 49 50 51
17 52 53 54
18 55 56 57
19 58 59 60
20 61 62 63
21 64 65 66
22 67 68 69
23 70 71 72