Продолжение прокатки - PullRequest
0 голосов
/ 07 июня 2018

В ответ на этот ответ: Есть ли способ сделать средневзвешенную скользящую сумму по группировке?

rsum = pd.rolling_apply(g.values,p,lambda x: np.nansum(w*x),min_periods=p)

roll_apply теперь амортизируется.Как бы вы изменили это, чтобы работать при текущей функциональности.

Спасибо.

1 Ответ

0 голосов
/ 07 июня 2018

Начиная с 0.18+, используйте Series.rolling.apply.

w = np.array([0.1,0.1,0.2,0.6])

df.groupby('ID').VALUE.apply(
    lambda x: x.rolling(window=4).apply(lambda x: np.dot(x, w), raw=False))

0       NaN
1       NaN
2       NaN
3     146.0
4     166.0
5       NaN
6       NaN
7       NaN
8       2.5
9       NaN
10      NaN
11      NaN
12     35.5
13     21.4
14      NaN
15      NaN
16      NaN
17      8.3
18      9.8
19      NaN
Name: VALUE, dtype: float64

. Аргумент raw является новым для 0.23 (установите его для указания прохождения массивов Series v / s), поэтому удалите его, еслиВозникли проблемы на старых версиях.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...