【问题标题】:Pivot table with rolling average具有滚动平均值的数据透视表
【发布时间】:2021-10-30 13:37:16
【问题描述】:

我尝试创建一个数据透视表来获取一个时间序列,该时间序列具有两天的滚动平均值。为此,我将 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],})

非常感谢您的帮助:)

【问题讨论】:

    标签: python pandas dataframe pivot-table


    【解决方案1】:

    你的情况

    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
    

    【讨论】:

    • 非常感谢您的回答。我需要如何更改它才能计算每天的平均值还包括前一天的值(滚动窗口为两个)?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多