【发布时间】:2021-03-06 23:29:29
【问题描述】:
我想知道在下面描述的带有MuliIndex 的groupby 对象上应用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