pandas计算前N个数据帧行的滚动标准

2024-03-29 15:27:53 发布

您现在位置:Python中文网/ 问答频道 /正文

我有这样一个数据帧:

date      A
2015.1.1  10
2015.1.2  20
2015.1.3  30
2015.1.4  40
2015.1.5  50
2015.1.6  60

我需要计算前N行的std,例如:

^{pr2}$

在pd.轧制标准但是,如何动态更改N?

df[['A']].apply(lambda x:pd.rolling_std(x,N))

<class 'pandas.core.frame.DataFrame'>
Index: 75 entries, 2015-04-16 to 2015-07-31
Data columns (total 4 columns):
A    75 non-null float64
dtypes: float64(4)
memory usage: 2.9+ KB

Tags: columns数据lambdapandasdf标准date动态
1条回答
网友
1楼 · 发布于 2024-03-29 15:27:53

可以通过在df上调用apply来完成,如下所示:

In [29]:
def func(x):
    return df.iloc[:x.name + 1][x.index].std()
​
df['std'] = df[['A']].apply(func, axis=1)
df
Out[29]:
       date   A        std
0  2015.1.1  10        NaN
1  2015.1.2  20   7.071068
2  2015.1.3  30  10.000000
3  2015.1.4  40  12.909944
4  2015.1.5  50  15.811388
5  2015.1.6  60  18.708287

它使用双下标[[]]对具有单个列的df调用apply,这允许您传递param axis=1,这样您就可以按行调用函数,然后可以访问index属性name和列名属性index,这允许您将df切片以计算滚动std。在

您可以向func添加一个窗口参数以根据需要修改窗口

编辑

看起来你的索引是一个str,下面应该行得通:

^{pr2}$

相关问题 更多 >