Python 使用2个先前事件的熊猫移动平均值
我在这里找到了移动平均线的正确公式: 问题在于,它使用的是1次出现之前的行和当前行输入。我试图使用我试图预测的行的前2个事件Python 使用2个先前事件的熊猫移动平均值,python,pandas,moving-average,Python,Pandas,Moving Average,我在这里找到了移动平均线的正确公式: 问题在于,它使用的是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
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())
输出:
从输出中,我们看到Johns second entry使用他的第一行和当前行来平均。我要查找的是John和Mike最后出现的是John:6和Mike:5.5,使用前两行,而不是前一行和当前行输入。我用它来预测,不知道当前的行,因为它们还没有发生。这是我对机器学习的第一个想法 如果要在lambda函数中添加每个组的移位:
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
如果要按组移位,请添加到lambda函数:
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.rolling3['pts'].sum.reset_indexlevel=0,drop=True
df['avg']=df['avg'].subdf['pts'].div2
产出:
个人平均分
0约翰10南
1迈克9南
约翰2南
3迈克2南
4约翰56.0
5麦克5.5
尝试:
df['avg']=df.groupby'person.rolling3['pts'].sum.reset_indexlevel=0,drop=True
df['avg']=df['avg'].subdf['pts'].div2
产出:
个人平均分
0约翰10南
1迈克9南
约翰2南
3迈克2南
4约翰56.0
5麦克5.5