멋진 퍼즐! for 루프를 사용하여 모든 창의 사전을 가져옵니다. 그런 다음 DataFrame을 만든 다음 value_counts()를 사용할 수 있습니다. 이게 당신이 요구 한 것입니까? .value_counts()
를 위하여
print(s.index // 4)
# => Int64Index([0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3], dtype='int64')
그룹 및 사용 : 당신의 시리즈는 RangeIndex
을 사용하기 때문에
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