后续rolling_apply折旧

时间:2018-06-07 15:13:33

标签: python pandas

跟进此答案:Is there a way to do a weight-average rolling sum over a grouping?

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

现在折旧了rolling_apply。您如何将其更改为在当前功能下工作。

谢谢。

1 个答案:

答案 0 :(得分:1)

从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数组),因此如果您在旧版本上遇到问题,请将其删除。