2

すべての営業日の分単位のデータを取得するために、「1min」freq で bdate_range を使用しようとしています。

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 に答える