2013-10-15 2 views
2

Я пытаюсь использовать bdate_range с частотой '1min', чтобы получать данные за минуту по всем рабочим дням.Диапазон рабочих дней Pandon Pandas bdate_range не занимает 1 минуту?

df = pd.bdate_range('20130101 9:30','20130106 16:00',freq='1min') 

с выходом заканчивается

...... 
2013-01-05 23:59:00 
2013-01-06 00:00:00 

In [158]: 

Обратите внимание, что 2013-01-05 и 2013-01-06 в выходные дни, и это не займет лимит времени между 9:30 и 16:00

Я думаю, что частота = '1мин' полностью перезаписывает FREQ = 'B' от имени функции bdate_range

Я также попытался с помощью DATE_RANGE. Он работал на период времени с 9:30 до 16:00, но он не может исключать выходные.

Спасибо!

ответ

3

Вы можете сделать это, как этот

In [28]: rng = pd.date_range('2012-01-01', '2013-01-01', freq="1min") 

In [29]: rng 
Out[29]: 
<class 'pandas.tseries.index.DatetimeIndex'> 
[2012-01-01 00:00:00, ..., 2013-01-01 00:00:00] 
Length: 527041, Freq: T, Timezone: None 

Ограничьте раз, что я хочу

In [30]: x = rng[rng.indexer_between_time('9:30','16:00')] 

In [31]: x 
Out[31]: 
<class 'pandas.tseries.index.DatetimeIndex'> 
[2012-01-01 09:30:00, ..., 2012-12-31 16:00:00] 
Length: 143106, Freq: None, Timezone: None 

Только дни, которые пн-пт

In [32]: x = x[x.dayofweek<5] 

In [33]: x 
Out[33]: 
<class 'pandas.tseries.index.DatetimeIndex'> 
[2012-01-02 09:30:00, ..., 2012-12-31 16:00:00] 
Length: 102051, Freq: None, Timezone: None 
+0

работает отлично. Большое спасибо!! – wzzcangzi

Смежные вопросы