带有 FixedForwardWindowIndexer 的 Pandas groupby 使内核在小数据帧中崩溃

问题描述

给定 2 个组,我想取同一组中 3 个元素的滑动窗口平均值。此外,我希望滑动窗口向前看,而不是向后看。以下是我执行上述操作的代码

import pandas as pd 
df = pd.DataFrame({'groups':['a','a','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','info': [i for i in range(10)],'shifted_means':[ 1.,2.,3.,nan,6.,7.,8.,nan]})

kaggle notebooks 和 Spyder 中,我的内核在运行第一个代码块时死亡。我的桌面安装了带有 Ubuntu 的 pandas 1.1.3。

有几件事很奇怪:

  1. 运行最后一行有时不会使内核崩溃。如果是这种情况,第二次或第三次运行它会使内核崩溃。
  2. 使用 rolling(3) 运行最后一行永远不会使内核崩溃。
  3. 仅运行 df.groupby('groups')['info'].rolling(window=indexer).mean().values 而不为其输出分配变量永远不会使内核崩溃。

我认为这是一个错误,但这意味着我对 FixedForwardWindowIndexer 有更深入的了解。有没有什么方法可以获得所需的结果而不会导致像反转数据帧和使用 rolling(3) 这样的黑客攻击?感谢您的帮助。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)