2

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

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 的时间范围内有效,但不能排除周末。

谢谢!

4

1 回答 1

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
于 2013-10-15T13:45:58.473 回答