簡體   English   中英

Pandas 在 groupby 上滾動平均

[英]Pandas rolling average on groupby

我想知道使用下面描述的MuliIndexgroupby object 應用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

MultiIndexgroupby().rolling()的行為是錯誤嗎?

此行為是一個錯誤,將在 pandas 版本 1.2.3 中修復,請參閱 GitHub 上的 pandas 存儲庫中報告的此問題

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM