重采样截止时间后至少n秒内的最后一个值

时间:2019-03-08 12:04:05

标签: python pandas

请考虑以下DF:

import pandas

mydata = pandas.DataFrame({'TRADE_PRICE': {pandas.Timestamp('2016-07-12 10:52:58.850899935'): 9.23,
  pandas.Timestamp('2016-07-12 10:55:13.832099915'): 9.23,
  pandas.Timestamp('2016-07-12 11:09:17.775099993'): 9.22,
  pandas.Timestamp('2016-07-12 11:09:25.811100006'): 9.22,
  pandas.Timestamp('2016-07-12 11:09:26.020699978'): 9.22,
  pandas.Timestamp('2016-07-12 11:09:27.408600092'): 9.22,
  pandas.Timestamp('2016-07-12 11:11:48.448199987'): 9.22,
  pandas.Timestamp('2016-07-12 11:11:58.801599979'): 9.21,
  pandas.Timestamp('2016-07-12 11:11:58.810499907'): 9.21,
  pandas.Timestamp('2016-07-12 11:11:59.049000025'): 9.21}})

现在

mydata.resample('1Min',label = 'right', closed = 'right').last()

在重新采样期结束前给我最后一笔交易。

我需要的是距离重采样周期结束至少5秒的最后一笔交易。

基本上,我希望有一种last()可以忽略在重采样周期结束后不到5秒的所有交易。

所以我希望得到类似的东西:

                     TRADE_PRICE
2016-07-12 10:53:00          NaN
2016-07-12 10:54:00          NaN
2016-07-12 10:55:00          NaN
2016-07-12 10:56:00         9.23
2016-07-12 10:57:00          NaN
2016-07-12 10:58:00          NaN
2016-07-12 10:59:00          NaN
2016-07-12 11:00:00          NaN
2016-07-12 11:01:00          NaN
2016-07-12 11:02:00          NaN
2016-07-12 11:03:00          NaN
2016-07-12 11:04:00          NaN
2016-07-12 11:05:00          NaN
2016-07-12 11:06:00          NaN
2016-07-12 11:07:00          NaN
2016-07-12 11:08:00          NaN
2016-07-12 11:09:00          NaN
2016-07-12 11:10:00         9.22
2016-07-12 11:11:00          NaN
2016-07-12 11:12:00         9.22

这可能吗?

1 个答案:

答案 0 :(得分:1)

您可以先将分钟数超过55秒的所有记录过滤掉,然后再按原样继续。

mydata_ = mydata[mydata.index.second <= 55]

mydata_.resample('1Min',label = 'right', closed = 'right').last()

返回:

                    TRADE_PRICE
2016-07-12 10:56:00 9.23
2016-07-12 10:57:00 NaN
2016-07-12 10:58:00 NaN
2016-07-12 10:59:00 NaN
2016-07-12 11:00:00 NaN
2016-07-12 11:01:00 NaN
2016-07-12 11:02:00 NaN
2016-07-12 11:03:00 NaN
2016-07-12 11:04:00 NaN
2016-07-12 11:05:00 NaN
2016-07-12 11:06:00 NaN
2016-07-12 11:07:00 NaN
2016-07-12 11:08:00 NaN
2016-07-12 11:09:00 NaN
2016-07-12 11:10:00 9.22
2016-07-12 11:11:00 NaN
2016-07-12 11:12:00 9.22