Python 滚动标准偏差偏移1行

Python 滚动标准偏差偏移1行,python,pandas,Python,Pandas,我有一个数据框,其中列有球员姓名和得分,每行是一场比赛。我想制作一个新的专栏“stdevl2”,它采用基于上两个游戏的滚动标准差。我想以前的2个游戏,不包括当前的游戏,将被使用。有没有一种优雅的方式来抵消一行 以下是我所期望的: Player | Points | STDev L2 Bob | 23.9 | 0 Bob | 27.9 | 0 Bob | 18.5 | 2.828427 我当前的代码和输出: df['STDev L2'] = df.groupb

我有一个数据框,其中列有球员姓名和得分,每行是一场比赛。我想制作一个新的专栏“stdevl2”,它采用基于上两个游戏的滚动标准差。我想以前的2个游戏,不包括当前的游戏,将被使用。有没有一种优雅的方式来抵消一行

以下是我所期望的:

Player | Points | STDev L2
Bob    | 23.9   |  0
Bob    | 27.9   |  0
Bob    | 18.5   |  2.828427
我当前的代码和输出:

df['STDev L2'] = df.groupby('Player')['Points'].apply(lambda x : x.rolling(2).std())

Player | Points | STDev L2
Bob    | 23.9   |  
Bob    | 27.9   |  2.828427
Bob    | 18.5   |  6.646804
还有,有没有办法使第一个空行变为0而不是空白

编辑:这对我有用!谢谢@ChrisA

df['STDev L2'] = df.groupby('Player')['Points'].apply(lambda x : x.shift(1).rolling(2).std().fillna(0))

请看一下pandas dataframe方法

您可以使用它来获得移位的数据,然后将移位的数据添加回原始数据帧


关于你的第二个问题,一种方法是简单地在结果上使用。看起来您可以使用
limit
参数使其仅填充开头(未测试,但这是我对文档的解释)。

您当前的方法似乎是可行的。对于空白值Advase> Stuts,您可以只使用<代码> fILNA < /代码>。ie
…应用(lambda x:x.shift().rolling(2.std().fillna(0))
@ChrisA工作得很好!我知道这很简单。