Pandas 计算数据帧中每5行的平均和标准偏差

Pandas 计算数据帧中每5行的平均和标准偏差,pandas,dataframe,average,Pandas,Dataframe,Average,我有一个数据帧,例如: A 27.00 18.00 15.00 7.50 5.00 4.00 3.00 1.50 1.00 现在,我想计算从下到上每5行的平均和标准偏差,并将其设置在上面的一行作为附加列,例如: A B(avg) C(standard deviation) 27.00 9.90 6.24899992 18.00 6.90 4.827007354 15.00 4.20 2.252776065 7.50 2.90 1.6

我有一个数据帧,例如:

A
27.00   
18.00
15.00
7.50
5.00
4.00
3.00
1.50
1.00
现在,我想计算从下到上每5行的平均和标准偏差,并将其设置在上面的一行作为附加列,例如:

A       B(avg)  C(standard deviation)
27.00   9.90    6.24899992
18.00   6.90    4.827007354
15.00   4.20    2.252776065
7.50    2.90    1.673320053
5.00        
4.00        
3.00        
1.50        
1.00

9.90=平均-4.00,5.00,7.50,15.00,18.00

6.2489992=标准偏差-4.00,5.00,7.50,15.00,18.00


我怎样才能做到这一点呢?

我想你在寻找与
.mean()
.std()
相结合的
.rolling()

编辑:


.dropna().reset_index(drop=True)
为每列设置索引,使其位于第一行。

使用滚动并将结果上移5行

df[['B','С']] = df.rolling(5)['A'].agg(('mean','std')).shift(-5)

您的代码在B列第0行返回14.5,但我想返回的值是第0行中的9.9平均值-4.00、5.00、7.50、15.00、18.00对于前五行,平均值是:
(27+18+15+7.5+5)/5=14.5
。但我想平均值为第0行中的-4.00、5.00、7.50、15.00、18.00。请澄清您的问题。为什么要从底部开始计数而不考虑第一行?此代码返回:ValueError:列的长度必须与键的长度相同这意味着您在df中已经有了B列和C列
df.drop(列=['B','C'])
before
df[['B','С']] = df.rolling(5)['A'].agg(('mean','std')).shift(-5)