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를 사용한다고 가정합니다. 아니면 새로운 기능을 모두 작성해야합니까? 감사합니다.
짧은 답변에서 매개 변수를 살펴있을 수 있습니다
... 'triang'(삼각형) 같은 윈도우의 다른 유형을 지정할 수 있습니다. 당신은 numpy와 함께 strided tricks를 사용할 수 있습니다. https://stackoverflow.com/questions/43636916/how-to-access-multi-columns-in-the-rolling-operator –
아마도 'EWM.mean' https : // pandas를 찾고있을 것입니다. .pydata.org/pandas-docs/stable/generated/pandas.core.window.EWM.mean.html # pandas.core.window.EWM.mean – Dark