【发布时间】:2021-01-07 04:00:03
【问题描述】:
我正在尝试计算金融时间序列数据的滚动指标。我想使用循环方法来模拟对实时数据的测试。
在 itertuples 循环中计算这些滚动指标的最有效方法是什么?
示例数据:
DateTime Bid
2006-01-03 00:01:07.588 0.85208
2006-01-03 00:01:08.654 0.85213
2006-01-03 00:01:08.859 0.85212
2006-01-03 00:01:11.472 0.85215
2006-01-03 00:01:12.002 0.85218
... ...
2020-03-15 23:59:57.150 0.85178
2020-03-15 23:59:57.300 0.85179
2020-03-15 23:59:58.233 0.85179
2020-03-15 23:59:58.366 0.85178
2020-03-15 23:59:58.595 0.85179
到目前为止我的代码。
df = pd.read_hdf(r"F:\Market Data\2020.3.15 FXAUDCAD-TICK-NoSession.h5")
df = df.set_index(pd.DatetimeIndex(df['DateTime']))
df = df.drop(columns=['DateTime'])
Rolling_Metric = []
for row in df.itertuples():
?
【问题讨论】:
-
你的实时数据是怎么来的?计算窗口的常用方法是
df.shift(),而不是生成器或逐行计算。另见:stackoverflow.com/questions/48084356/… -
@ChrisTang 数据来自一个 API,该 API 返回一个数据窗口或相当于上面找到的“示例数据”中的单行。
-
我想确认API的新数据,无论是窗口形式还是单行形式,是否在您收集的时间索引之后?
-
@ChrisTang 是的,数据将按时间顺序排列,每个新数据点在前一个点之后的一段时间内下降。
-
只是为了澄清:你不能使用
DataFrame.rolling?
标签: python pandas loops time-series rolling-computation