Python Pandas自定义日期时间索引



我希望使用自定义DateTime索引重新索引我的数据。我希望索引是:周日下午5点到周一下午4点;周一下午5点至周二下午4点;周二下午5点至周三下午4点;周三下午5点至周四下午4点;周四下午5点至周五下午4点,每隔1分钟。我一直在玩周围与下面的代码,但我似乎不能得到任何数据填充在time_stamps。似乎我的问题可能是工作日开始和结束的时间,我不确定如何解决这个问题。如有任何帮助,不胜感激。

import pandas as pd
from pandas.tseries.holiday import USFederalHolidayCalendar
from pandas.tseries.offsets import CustomBusinessDay
import datetime as dt

BDAY_US=CustomBusinessDay(calendar=USFederalHolidayCalendar())
sample_freq= '1min'
dates= pd.date_range(start='2016-07-11',end='2016-07-21', freq=BDAY_US ).date
times = pd.date_range(start='17:00:00', end='16:00:00', freq=sample_freq).time[1:]
time_stamps = [dt.datetime.combine(date, time) for date in dates for time in times]

与我的答案类似,您可以生成完整范围的时间戳,然后删除您不感兴趣的时间戳:

time_stamps = pd.date_range('2016-07-11', '2016-07-21', freq='1min')
mask = ~((time_stamps.hour > 16) & (time_stamps.hour < 17))
time_stamps[mask]

有两个并发症:

首先,您需要删除周五5pm -周日4pm

weekend_mask = ~(
    ((time_stamps.dayofweek == 4) & (time_stamps.hour >= 17)) |
     (time_stamps.dayofweek == 5) |
    ((time_stamps.dayofweek == 6) & (time_stamps.hour <= 16))
)
mask = mask & weekend_mask

第二个,您想要删除假日。我的链接答案的这一部分可能会有所帮助:

您可以通过向掩码添加条件来包含日历:

import numpy as np
np.in1d(index.date, calendar)

日历将是一个numpy数组的日期时间对象。

相关内容

  • 没有找到相关文章

最新更新