我有以下数据框:
df = pd.DataFrame({'Team':['A','A','A','A','B','B','B','B'],
'Date':list(pd.date_range(start='1/1/2021', periods=8)),
'Score':[7,3,3,6,7,3,7,5],
}).set_index(['Team', 'Date'])
我想添加一个滚动平均值列,当0级指数是一个新值时,该列将重置。下面的简单代码不起作用,因为滚动平均值在指数值之间结转:
df['Avg'] = df['Score'].rolling(window=2).mean()
Score Avg
Team Date
A 2021-01-01 7 NaN
2021-01-02 3 5.0
2021-01-03 3 3.0
2021-01-04 6 4.5
B 2021-01-05 7 6.5
2021-01-06 3 5.0
2021-01-07 7 5.0
2021-01-08 5 6.0
如何获取以下数据框?:
Score Avg
Team Date
A 2021-01-01 7 NaN
2021-01-02 3 5.0
2021-01-03 3 3.0
2021-01-04 6 4.5
B 2021-01-05 7 NaN
2021-01-06 3 5.0
2021-01-07 7 5.0
2021-01-08 5 6.0
谢谢
2条答案
按热度按时间taor4pac1#
使用
df.group_by
(分配给新列时使用df.values
):生产
xa9qqrwz2#
在
level='Team'
和droplevel
上使用groupby rolling mean
以正确对齐索引:df
:与
values
相比,droplevel
的优点是步进将正确对齐。给定一个无序DataFrame,如下所示:
df
:请注意
droplevel
和values
之间的区别: