【发布时间】:2018-05-11 06:08:26
【问题描述】:
我有一个时间序列,我正在重新采样到 5s 窗口,如下所示:
INDEX size price
2018-05-07 21:53:13.731 0.365127 9391.800000
2018-05-07 21:53:16.201 0.666127 9391.800000
2018-05-07 21:53:18.038 0.143104 9391.800000
2018-05-07 21:53:18.243 0.025643 9391.800000
2018-05-07 21:53:18.265 0.640484 9391.800000
2018-05-07 21:53:18.906 -0.100000 9391.793421
2018-05-07 21:53:19.829 0.559516 9391.800000
2018-05-07 21:53:19.846 0.100000 9391.800000
2018-05-07 21:53:19.870 0.006560 9391.800000
2018-05-07 21:53:20.734 0.666076 9391.800000
2018-05-07 21:53:20.775 0.666076 9391.800000
2018-05-07 21:53:28.607 0.100000 9391.800000
2018-05-07 21:53:28.610 0.041991 9391.800000
2018-05-07 21:53:29.283 -0.053518 9391.793421
2018-05-07 21:53:47.322 -0.046302 9391.793421
2018-05-07 21:53:49.182 0.100000 9391.800000
def tick_features(x):
volume = np.abs(x['size']).sum()
num_trades = x['size'].count()
return pd.Series([volume,num_trades], index=['volume','num_trades'])
tick = tick.groupby(pd.Grouper(freq='5S')).apply(tick_features)
我将如何通过pd.Grouper() 和.apply() 获取每个 5S 的第一个和最后一个元素?
我可以用.resample().agg() 和{'price':'first'} 做类似的事情,但出于其他原因,如果可能的话,我想通过pd.Grouper() 做。
【问题讨论】:
标签: python pandas time-series