使用前两次出现的熊猫的移动平均值

问题描述 投票:1回答:2

我能够在此处找到移动平均值的适当公式:Moving Average SO Question

问题是,它使用的是先前发生的1条记录和当前行的输入。我正在尝试使用2个先前出现的行来预测。

import pandas as pd
import numpy as np

df = pd.DataFrame({'person':['john','mike','john','mike','john','mike'],
                    'pts':[10,9,2,2,5,5]})

df['avg'] = df.groupby('person')['pts'].transform(lambda x: x.rolling(2).mean())

输出:OUTPUT

从输出中,我们看到Johns的第二个条目正在使用他的第一个条目,并且当前行使用Avg。我要查找的是John和Mikes最后出现的是John:6和Mike:5.5,使用前两个而不是前一个和当前行输入。我将其用于预测,并且不知道当前行pts,因为它们尚未发生。机器学习的新手,这是我对功能的第一个想法。

python pandas moving-average
2个回答
3
投票

如果要按组移动,请在lambda函数中添加Series.shift

Series.shift

0
投票

尝试:

df['avg'] = df.groupby('person')['pts'].transform(lambda x: x.rolling(2).mean().shift())
print (df)
  person  pts  avg
0   john   10  NaN
1   mike    9  NaN
2   john    2  NaN
3   mike    2  NaN
4   john    5  6.0
5   mike    5  5.5

输出:

df['avg'] = df.groupby('person').rolling(3)['pts'].sum().reset_index(level=0, drop=True)

df['avg']=df['avg'].sub(df['pts']).div(2)
© www.soinside.com 2019 - 2024. All rights reserved.