Python Pandas营业日范围bdate_range不需要1分钟频率?

时间:2013-10-15 05:16:23

标签: python pandas date-range

我正在尝试使用bdate_range和'1min'freq来获取所有工作日的分钟数据。

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之间没有时间限制

我认为freq ='1min'完全覆盖了函数名bdate_range的freq ='B'

我也尝试过使用date_range。它工作时间从9:30到16:00,但不能排除周末。

谢谢!

1 个答案:

答案 0 :(得分:4)

你可以这样做

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