使用滚动平均值旋转 table

Pivot table with rolling average

我尝试创建一个枢轴 table 来获得一个时间序列,其中两天的滚动平均值随时间变化。为此,我将 pivot_table() 与 aggfunc='mean' 一起使用,但到目前为止,我只能为每一天创建一个平均值,而没有考虑前一天。这将是一个简单的例子 data.frame:

df = pd.DataFrame({
    'Date':['2021-01-01', '2021-01-01', '2021-01-01', '2021-01-02', '2021-01-02', '2021-01-02', '2021-01-02', '2021-01-03', '2021-01-03', '2021-01-03'],
    'Name':['Tim', 'Tim', 'Ben', 'Leo', 'Tim', 'Ben', 'Leo', 'Leo', 'Ben', 'Tim'], 
    'Ratings':[9.0, 8.0, 5.0, 3.0, 'NaN', 'NaN', 6, 5, 3, 5]})  

这是我尝试过的方法,但我不知道如何将 2 的滚动 window 纳入其中,同时考虑前一天的评分平均值。

df.pivot_table(
        values='Ratings', index='Date', columns='Name',
        fill_value=0, aggfunc='mean')

这将是我努力实现的目标。

df = pd.DataFrame({
    'Date':['2021-01-01', '2021-01-02', '2021-01-03'],
    'Tim':[8.5, 8.5, 5], 
    'Ben':[5, 5, 3],
    'Leo':['NaN', 4.5, 4.66],})

非常感谢您的帮助:)

你的情况

out = df.pivot_table(
    values='Ratings', index='Date', columns='Name',
     aggfunc='mean').ffill(limit=1)
Name        Ben  Leo  Tim
Date                     
2021-01-01  5.0  NaN  8.5
2021-01-02  5.0  4.5  8.5
2021-01-03  3.0  5.0  5.0