2016-06-27 1 views
12

팬더 0.18.1을 사용하여 1 열 데이터 프레임의 롤링 평균을 취하고 싶습니다. 버전 0.18.0 이후로 rolling() 객체를 사용하여이 작업을 수행합니다. 이러한 롤링 객체의 기본값은 오른쪽 정렬됩니다. 롤링 객체를 중심 값에 정렬하기 위해 부울 인수 인 center = True를 전달할 수 있지만 왼쪽 정렬하는 방법은없는 것처럼 보입니다. 여기서 예이다 :팬더 롤링 대상물의 왼쪽 맞춤

df = pandas.DataFrame({'A': [2,3,6,8,20, 27]}) 
df 
    A 
0 2 
1 3 
2 6 
3 8 
4 20 
5 27 

표준 방법 자동 오른쪽으로 정렬되므로 값의 크기가 3 인 창 처음 두 indecies에 없다 : 우리가 조작 가운데 정렬 할

df.rolling(window=3).mean() 
      A 
0  NaN 
1  NaN 
2 3.666667 
3 5.666667 
4 11.333333 
5 18.333333 

같은 :

df.rolling(3).mean() 
      A 
0 3.666667 
1 5.666667 
2 11.333333 
3 18.333333 
4  NaN 
5  NaN 
01 :

df.rolling(window=3).mean(center=True) 
      A 
0  NaN 
1 3.666667 
2 5.666667 
3 11.333333 
4 18.333333 
5  NaN 

는하지만 내가 무엇을 찾고있어 이것이다

기본 오른쪽 정렬로 수행 한 다음 다시 인덱싱하거나 행의 순서를 반대로 변경 한 다음 "오른쪽 맞춤"으로 수행하면이 작업을 수행 할 수 있습니다. 똑 바른 조작.

답변

13

난 당신이 shift를 사용할 수 있다고 생각 : 나는 그것을 할 수있는보다 직접적인 방법이 있었다 기대했다하지만

a = df.rolling(window=3).mean().shift(-2) 
print (a) 
      A 
0 3.666667 
1 5.666667 
2 11.333333 
3 18.333333 
4  NaN 
5  NaN 
+0

이 좋은 솔루션입니다. 나는 그 기능이 아직 롤링 객체에 없다고 생각한다. – Alex

+0

예, 당신이 옳다고 생각합니다. 나는 그것을 결코 보지 않는다. – jezrael

+4

원하는 기능이 팬더 롤링 개체에 실제로 없기 때문에이 대답을 받아 들였고 이것이 가장 우아한 솔루션을 제공합니다. 이 왼쪽 정렬을 좀 더 동적으로 관리하려면 윈도우 크기를 변수 w로 설정 한 다음 .shift() 메서드의 인수를 w-1로 지정할 수 있습니다. – Alex

관련 문제