熊猫:选择星期日23:00-星期五23:00(1年跨度)之间的数据

时间:2016-10-13 17:32:23

标签: python datetime pandas time-series datetimeindex

我有整个2015年的分钟粒度的欧元兑美元汇率的时间序列,包括非交易日(例如周末),其中时间序列值在整个非交易期间重复。

我需要在周日下午23:00到周五23:00之间只选择数据来丢弃这些时段。

我还没有为熊猫找到解决方案(我知道如何在一天之内选择并在几天之间选择)。我可以简单地将时间缩短1小时,然后只选择工作日,但这是次优解决方案。

关于如何实现这一目标的任何想法?

数据示例:

Local time,              Open,    High,    Low,     Close,   Volume
02.01.2015 22:58:00.000, 1.20008, 1.20016, 1.20006, 1.20009, 119.84
02.01.2015 22:59:00.000, 1.20009, 1.20018, 1.20004, 1.20017, 40.61
02.01.2015 23:00:00.000, 1.20017, 1.20017, 1.20017, 1.20017, 0
02.01.2015 23:01:00.000, 1.20017, 1.20017, 1.20017, 1.20017, 0
...
04.01.2015 22:58:00.000, 1.20017, 1.20017, 1.20017, 1.20017, 0
04.01.2015 22:59:00.000, 1.20017, 1.20017, 1.20017, 1.20017, 0
04.01.2015 23:00:00.000, 1.19495, 1.19506, 1.19358, 1.19410, 109.4
04.01.2015 23:01:00.000, 1.19408, 1.19414, 1.19052, 1.19123, 108.12
...

1 个答案:

答案 0 :(得分:1)

考虑elem_type &operator*() { return (*buf_)[pos_]; } pd.DataFramedf pd.tseries.index.DatetimeIndex

tidx

我们可以构建一系列要过滤的值

tidx = pd.date_range('2010-01-01', '2011-01-01', freq='H')
df = pd.DataFrame(np.ones((tidx.shape[0], 2)), tidx, columns=list('AB'))

确定哪些值在星期五23:00之前

day_hour = (((tidx.weekday + 1) % 7) * 100) + tidx.hour

周日23:00之后

before_friday = day_hour <= 523

根据上述条件过滤我们的{​​{1}}

after_sunday = day_hour >= 23