【问题标题】:Pandas rolling average on groupby熊猫在 groupby 上的滚动平均值
【发布时间】:2021-03-06 23:29:29
【问题描述】:

我想知道在下面描述的带有MuliIndexgroupby 对象上应用rolling 的行为是否是预期的。问题是直接在groupby 上使用rolling 不会保留MultiIndex。但是,在 groupby 上使用 apply 会保留索引。

df = pd.DataFrame([1, 2, 3, 4], index=pd.MultiIndex.from_arrays([[1, 1, 2, 2], ['red', 'blue', 'red', 'blue']], names=['number', 'color']))

我想计算level='number' 中每组的滚动平均值。直接在groupby上应用rolling,结果被单个level='number'索引,去掉level='color'

df.groupby(level='number').rolling(window=2).mean()


          0
number     
1       NaN
1       1.5
2       NaN
2       3.5

我可以在groupby 上使用apply 获得想要的结果

df.groupby(level='number').apply(lambda x: x.rolling(2).mean())

                0
number color     
1      red    NaN
       blue   1.5
2      red    NaN
       blue   3.5

groupby().rolling()MultiIndex 上的行为是错误吗?

【问题讨论】:

    标签: python pandas pandas-groupby


    【解决方案1】:

    此行为是一个错误,将在 pandas 版本 1.2.3 中修复,请参阅 GitHub 上的 pandas 存储库中报告的this issue

    【讨论】:

      猜你喜欢
      • 2019-07-27
      • 2017-09-12
      • 2023-02-17
      • 1970-01-01
      • 2018-04-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多