识别股票组合中的股票,并对反向ord中的特定股票应用数字运算

2024-04-25 17:49:01 发布

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

假设我有一个如下所示的数据帧

   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中实现这一点?你知道吗


Tags: 数据httpsdfclose链接stockopennan
2条回答

您可以使用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

据我所知,从你的df你是试图计算一些东西,如移动平均指标。你知道吗

要做到这一点,您只需在迭代中使用:

for i in range(0, df.shape[0] - 2):
    df.loc[df.index[i + 2], 'AVG'] = np.round(((df.iloc[i, 1] + df.iloc[i + 1, 1] + df.iloc[i + 2, 1]) / 3), 1)

在哪里pd.loc公司子句指定要计算度量的列,我使用了own。你知道吗

此外(如果您想要更具体的指标),您可以尝试使用滚动法计算平均值:

df['AVG'] = df.iloc[:, 1].rolling(window = 3).mean()

必须使用要计算度量的列,而不是1。在“窗口列”中,指定要计算此值的上一列数。你知道吗

希望这会有帮助!你知道吗

相关问题 更多 >