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 pandas 中实现这一点?
解决方案
您可以使用groupby
和rolling
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
推荐阅读
- python-3.x - Python:传递内存视图与传递字节或字节数组之间有区别吗?
- python - 不能将 Python 数据类与 PyQt5 小部件一起使用
- .net - 多个异步函数,首先返回正确的结果
- extjs - EXTJS 7.2.0 CLASSIC - 使用 Chrome 81 的网格标题插入问题/错误(已解决)
- accessibility - 实时聊天和 WCAG 2.1
- c# - IIS 工作线程与 Web 应用程序线程
- java - 关闭并重新打开 Android 应用程序后无法访问/控制正在进行的下载
- python - 'str' 对象在 Django 中没有属性 'user' 错误
- azure - 如何从 Azure 应用服务访问外部元数据库配置文件
- c# - 在 Office 加载项 C# 中,是否可以选择仅在 office 应用程序顶部打开表单?