2017-11-13 6 views
1

큰 timeseries에 가중 평균을 적용하고 팬더 데이터 프레임으로 설정합니다. 매일 가중치가 다릅니다.판다 롤링 가중 평균

Date  v_std vertical     
2010-10-01 1.909 545.231 
2010-10-02 1.890 538.610 
2010-10-03 1.887 542.759 
2010-10-04 1.942 545.221 
2010-10-05 1.847 536.832 
2010-10-06 1.884 538.858 
2010-10-07 1.864 538.017 
2010-10-08 1.833 540.737 
2010-10-09 1.847 537.906 
2010-10-10 1.881 538.210 
2010-10-11 1.868 544.238 
2010-10-12 1.856 534.878 

내가 무게로 v_std를 사용하여 수직 열의 롤링 평균을하려면 다음은 dataframe

DF의 부분 집합이다. 나는 가중 평균 함수를 사용 해왔다.

def wavg(group, avg_name, weight_name): 
    d = group[avg_name] 
    w = group[weight_name] 
    try: 
     return (d * w).sum()/w.sum() 
    except ZeroDivisionError: 
     return d.mean() 

그러나 롤링 가중치 평균에 대해 이것을 구현하는 방법을 알 수 없다.

df.rolling(window = 7).apply(wavg, "vertical", "v_std") 

또는 rolling_apply를 사용한다고 가정합니다. 아니면 새로운 기능을 모두 작성해야합니까? 감사합니다.

+0

짧은 답변에서 매개 변수를 살펴있을 수 있습니다

... 'triang'(삼각형) 같은 윈도우의 다른 유형을 지정할 수 있습니다. 당신은 numpy와 함께 strided tricks를 사용할 수 있습니다. https://stackoverflow.com/questions/43636916/how-to-access-multi-columns-in-the-rolling-operator –

+0

아마도 'EWM.mean' https : // pandas를 찾고있을 것입니다. .pydata.org/pandas-docs/stable/generated/pandas.core.window.EWM.mean.html # pandas.core.window.EWM.mean – Dark

답변