python - 后续rolling_apply已弃用

标签 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 现已弃用。您将如何更改它以在当前功能下工作。

最佳答案

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

关于python - 后续rolling_apply已弃用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50744746/

相关文章:

python - 编写检查所有 pandas DataFrame 列值是否满足特定值?

python - 在 Matplotlib 中旋转现有轴刻度标签

python - 如何在谷歌应用程序引擎上部署我的 flask 应用程序?

python - 从 python 列表中删除 '\n' 列表项

python - 如何在使用 Python 进行网页抓取时绕过 cookie 协议(protocol)页面?

python - 如何管理 Pandas 数据中的单位?

python - 调用 QWebView.print_() 时 gui 被锁定

python - 将 YYYYMXX 转换为 pandas 数据框中的日期

python-3.x - 数据框连接列

python - 由两个分类列定义的 pandas 数据框的加权时间聚合