不錯的拼圖! 我使用for循環來獲取所有窗口的字典。然後我構建一個DataFrame,然後我可以使用value_counts()。這是你要求的嗎?
In [150]: winsize = 4
In [151]: for i in range(len(s)+1-winsize): wd[i] = s[i:i+winsize].tolist()
In [152]: wd
Out[152]:
{0: ['A', 'A', 'B', 'C'],
1: ['A', 'B', 'C', 'A'],
2: ['B', 'C', 'A', 'C'],
3: ['C', 'A', 'C', 'A'],
4: ['A', 'C', 'A', 'C'],
5: ['C', 'A', 'C', 'A'],
6: ['A', 'C', 'A', 'B'],
7: ['C', 'A', 'B', 'B'],
8: ['A', 'B', 'B', 'B'],
9: ['B', 'B', 'B', 'A'],
10: ['B', 'B', 'A', 'A'],
11: ['B', 'A', 'A', 'C']}
In [153]: pd.DataFrame(wd)
Out[153]:
0 1 2 3 4 5 6 7 8 9 10 11
0 A A B C A C A C A B B B
1 A B C A C A C A B B B A
2 B C A C A C A B B B A A
3 C A C A C A B B B A A C
In [154]: pd.DataFrame(wd).apply(pd.value_counts)
Out[154]:
0 1 2 3 4 5 6 7 8 9 10 11
A 2 2 1 2 2 2 2 1 1 1 2 2
B 1 1 1 NaN NaN NaN 1 2 3 3 2 1
C 1 1 2 2 2 2 1 1 NaN NaN NaN 1
謝謝,我會看看。我只是想要非重疊窗口,但這不是一個pb我想,你只需要在範圍內添加一個步驟。 – jrjc