我正在尝试使用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,但不能排除周末。
谢谢!
答案 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