首页 > 解决方案 > 具有滚动平均值的数据透视表

问题描述

我尝试创建一个数据透视表来获得一个时间序列,其滚动平均值为两天。为此,我将 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 的滚动窗口,以考虑前一天的评分平均值。

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],})

非常感谢您的帮助 :)

标签: pythonpandasdataframepivot-table

解决方案


在你的情况下

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

推荐阅读