Python 滚动标准偏差偏移1行
我有一个数据框,其中列有球员姓名和得分,每行是一场比赛。我想制作一个新的专栏“stdevl2”,它采用基于上两个游戏的滚动标准差。我想以前的2个游戏,不包括当前的游戏,将被使用。有没有一种优雅的方式来抵消一行 以下是我所期望的: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
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工作得很好!我知道这很简单。