2013-10-15 42 views
2

我正在嘗試使用帶'1分鐘'頻率的bdate_range在所有工作日內逐分鐘獲取數據。Python 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年1月5日和2013年1月6日是週末結束,它沒有考慮9:30至16:00之間

時間限制

我覺得頻率=「1分鐘」完全覆蓋從函數名bdate_range頻率=「B」

我也使用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