首页 > 解决方案 > 识别股票组合中的股票并以相反的顺序对特定股票应用数字运算

问题描述

假设我有一个数据框,如下所示

   Stock     open     high      low    close          Avg
0   SBIN   255.85   256.00   255.80   255.90          Nan
1   HDFC  1222.25  1222.45  1220.45  1220.45          Nan
2   SBIN   255.95   255.95   255.85   255.85          Nan
3   HDFC  1222.00  1222.50  1221.70  1221.95          Nan
4   SBIN   255.80   256.00   255.80   255.95        255.9
5   HDFC  1221.90  1222.00  1221.55  1221.70  1221.366667
6   SBIN   255.85   255.95   255.70   255.80  255.8666667
7   HDFC  1222.00  1222.00  1221.45  1221.95  1221.866667
8   SBIN   255.80   255.95   255.70   255.80       255.85
9   HDFC  1222.00  1222.00  1221.25  1221.90      1221.85
10  SBIN   255.75   255.80   255.60   255.65       255.75
11  HDFC  1222.00  1222.00  1221.40  1221.80  1221.88333333

这是我截取屏幕截图的df的链接。https://photos.app.goo.gl/kTZERCerFzggDfHEA

现在平均列是该特定股票前三个收盘价的平均值。我如何在 python pandas 中实现这一点?

标签: pythonpandaspandas-groupby

解决方案


您可以使用groupbyrolling

df['Avg'] = df.groupby('Stock', as_index=False)['close'].rolling(3).mean().reset_index(0,drop=True)

df

Out[1]: 
   Stock     open     high      low    close          Avg
0   SBIN   255.85   256.00   255.80   255.90          NaN
1   HDFC  1222.25  1222.45  1220.45  1220.45          NaN
2   SBIN   255.95   255.95   255.85   255.85          NaN
3   HDFC  1222.00  1222.50  1221.70  1221.95          NaN
4   SBIN   255.80   256.00   255.80   255.95   255.900000
5   HDFC  1221.90  1222.00  1221.55  1221.70  1221.366667
6   SBIN   255.85   255.95   255.70   255.80   255.866667
7   HDFC  1222.00  1222.00  1221.45  1221.95  1221.866667
8   SBIN   255.80   255.95   255.70   255.80   255.850000
9   HDFC  1222.00  1222.00  1221.25  1221.90  1221.850000
10  SBIN   255.75   255.80   255.60   255.65   255.750000
11  HDFC  1222.00  1222.00  1221.40  1221.80  1221.883333

推荐阅读