我知道已经有一些关于此的帖子,但我的情况有点不同,我想在这方面获得一些帮助。
我有一个pandas数据框symbol_df,每个股票代码的格式为1分钟柱形图:
id Symbol_id Date Open High Low Close Volume
1 1 2023-12-13 09:15:00 4730.95 4744.00 4713.95 4696.40 2300
2 1 2023-12-13 09:16:00 4713.20 4723.70 4717.85 4702.55 1522
3 1 2023-12-13 09:17:00 4716.40 4718.55 4701.00 4701.00 909
4 1 2023-12-13 09:18:00 4700.15 4702.80 4696.70 4696.00 715
5 1 2023-12-13 09:19:00 4696.70 4709.90 4702.00 4696.10 895
... ... ... ... ... ... ... ...
108001 1 2024-03-27 13:44:00 6289.95 6291.95 6289.00 6287.55 989
108002 1 2024-03-27 13:45:00 6288.95 6290.85 6289.00 6287.75 286
108003 1 2024-03-27 13:46:00 6291.25 6293.60 6292.05 6289.10 1433
108004 1 2024-03-27 13:47:00 6295.00 6299.00 6293.20 6293.15 2702
108005 1 2024-03-27 13:48:00 6292.05 6296.55 6291.95 6291.95 983
我想计算“相对交易量比率”指标,并将该计算值作为滚动基础上的新列添加到 symbol_df 中。
“相对体积比”指标计算如下:
目前为止今天的成交量是与过去10天同期的平均成交量进行比较的。要获得比率值,我们只需将“今天迄今为止的交易量”除以“同一时期最后 10 天的平均交易量”即可。
例如..当前柱时间现在是 13:48。
今天 00:00 -13:48 之间的cumulativeVolumeOfToday = Volume
1 分钟柱形图已累计
avergeVolumeOfPreviousDaysOfSamePeriod = Average
过去10天同期(00:00 - 13:48)成交量累积。
relativeVolumeRatio = CumulativeVolumeOfToday/AvergeVolumeOfPrevious10DaysOfSamePeriod
将此值作为新列添加到数据框中。
我怎样才能在 Pandas 中做到这一点?
如果您能提供一些测试数据和预期结果,以及您到目前为止尝试过的代码,并描述您遇到的问题,那就太好了。
无论如何,从现有的描述来看,您似乎需要对聚合数据进行一些转换。首先是累计汇总每天的数据。然后对按时间戳分组的数据运行十天窗口以计算平均值。最后,将前者除以后者:
volume = symbol_df.set_index('Date')['Volume']
date = volume.index
cum_volume = volume.groupby(date.day).cumsum()
mean10days = volume.groupby(date.time).rolling('10d', min_periods=10).mean().reset_index(0, drop=True)
symbol_df['rvr'] = cum_volume / mean10days