나는 다음과 같은 시리즈를 가지고있다. 나는 "test"라는 자체 정의 함수를 롤 적용하고 결과를 s로 즉시 업데이트하여 "test"의 다음 반복이 업데이트 된 s를 기반으로하도록한다. 내 예를 들어 설명해 드리겠습니다.팬더 롤링이 다음 반복을 위해 시리즈 업데이트에 적용됩니까?
s = pd.Series(range(5), index=pd.date_range('1/1/2000', periods=5))
s
2000-01-01 0
2000-01-02 1
2000-01-03 2
2000-01-04 3
2000-01-05 4
Freq: D, dtype: int32
다음과 같이 자체 정의 된 기능이 있습니다. 이것은 실제 사례의 단순한 예입니다. 첫 번째 반복에서 반환 된 변수 'update'가 100으로 설정되어 있고 s를 [0, 1, 100, 3, 4, ...]로 업데이트하려고합니다. 다음 반복의 경우 arr.sum()은 (1 + 2 + 3) 대신 (1 + 100 + 3)을 기반으로 계산됩니다.
def test(arr):
print(arr)
print(arr.sum())
if arr.sum()%3==0:
print('True')
update=100
else:
update=arr[-1]
return update
s=s.rolling(window=3).apply(test)
[ 0. 1. 2.]
3.0
True
[ 1. 2. 3.]
6.0
True
[ 2. 3. 4.]
9.0
True
이상적인 출력 :
[ 0. 1. 2.]
3.0
True
'Update s with 100'
[ 1. 100. 3.]
104
[ 100. 3. 4.]
107