pandas - 带有 FixedForwardWindowIndexer 的 Pandas groupby 使内核在小型 DataFrame 中崩溃
问题描述
给定 2 个组,我想取同一组中 3 个元素的滑动窗口平均值。此外,我希望滑动窗口向前看,而不是向后看。以下是我执行上述操作的代码:
import pandas as pd
df = pd.DataFrame({'groups':['a','a','a','a','a','b','b','b','b','b'],
'info': [i for i in range(10)]})
indexer = pd.api.indexers.FixedForwardWindowIndexer(window_size=3)
df['shifted_means'] = df.groupby('groups')['info'].rolling(window=indexer).mean().values
期望的结果应该是
pd.DataFrame({'groups':['a','a','a','a','a','b','b','b','b','b'],
'info': [i for i in range(10)],
'shifted_means':[ 1., 2., 3., nan, nan, 6., 7., 8., nan, nan]})
在 kaggle 笔记本和 Spyder 中,我的内核在运行第一块代码时就死了。我的桌面有带有 Ubuntu 的 pandas 1.1.3。
这有几件事很奇怪:
- 运行最后一行有时不会使内核崩溃。如果是这种情况,第二次或第三次运行它会使内核崩溃。
- 运行最后一行
rolling(3)
永远不会使内核崩溃。 - 只是在
df.groupby('groups')['info'].rolling(window=indexer).mean().values
没有为其输出分配变量的情况下运行永远不会使内核崩溃。
我会称这是一个错误,但这意味着FixedForwardWindowIndexer
我没有更深入的了解。有没有什么方法可以得到想要的结果,而不会导致像反转数据框和使用这样的黑客攻击rolling(3)
?谢谢您的帮助。
解决方案
推荐阅读
- django - Django Admin中的链式选择/依赖下拉菜单
- android - 如何在android中为retrofit api调用编写本地单元测试
- c - 为什么在使用出队时返回队列?
- python - 在 NGINX 中使用子路径部署 Gunicorn
- javascript - 如何使用 npm dbus-network-manager 更改以太网接口的 IP 地址?
- node.js - 为什么这个例子会抛出 UnhandledPromiseRejectionWarning?
- julia - 警告:`Array{T, 1}(m::Int) where T` 已被弃用,请改用`Array{T, 1}(undef, m)`。朱莉娅
- codeigniter - 从 url 中删除控制器的名称。代码点火器
- gcc - 如果链接描述文件中没有定义属性部分,有没有办法让编译器发出警告/错误?
- actions-on-google - 如果通过键盘激活操作,则音频不会在 SSML 中播放