2016-04-20 10 views
0

この質問はに関連している:Python pandas, how to only plot a DataFrame that actually have the datapoint and leave the gap out非連続的な日中のインデックス

私は、特定の[株式交換]の間でサンプルを維持することが、日中の解像度で非連続的なDateTimeIndexを生成する最も簡単な方法を知りたいのですが回08:00〜16:30、平日のみを与えている。月〜金ボーナスは、有効な日付のカレンダーの提供を許可することです。

月曜日の金曜日はpandas.bdate_range()で簡単にできます。私が欲しいのは、日中のようなものです。土曜日/日曜日は含まれません。

この点は、ラベルを維持しながら、 'ギャップ'のない金融時系列の連日をグラフ化できることです。すなわち、この:以下、VS

with gaps in index

(日付のみがここに示されているがXラベルは、第2の解像度で、を持続していることに注意してください - あなたが時間内に拡大するとすると、目に見えるようになる):

consecutive

これを達成する唯一の方法ではありません。リンクされた質問を参照してください(おそらくuse_index=Falseパラメータをpandas.Series.plot()に使用するのが最も簡単です)。しかし、この質問は、非連続の作成に関連していますDateTimeIndex;私は、代替ソリューションを求めていないよ

+0

日中のインデックスを作成し、土曜日と日曜日だけでなく夜間の時間も削除するのはどうですか? – IanS

+0

それはうまくいくと思います。どれくらいの定型的なコードがそれになりますか? – Luciano

+0

ちょうど2行のコード(私の答えを見てください:) – IanS

答えて

1

あなたは完全な日中のインデックスを作成し、夜や週末を除外することができます:

import pandas as pd 
index = pd.date_range('2016-01-01', '2016-01-16', freq='1min') 
index[(index.dayofweek <= 4) & (index.hour >= 8) & (index.hour <= 16)] 

出力:あなたはカレンダーを含めることができ

DatetimeIndex(['2016-01-01 08:00:00', '2016-01-01 08:01:00', 
       '2016-01-01 08:02:00', '2016-01-01 08:03:00', 
       '2016-01-01 08:04:00', '2016-01-01 08:05:00', 
       '2016-01-01 08:06:00', '2016-01-01 08:07:00', 
       '2016-01-01 08:08:00', '2016-01-01 08:09:00', 
       ... 
       '2016-01-15 16:50:00', '2016-01-15 16:51:00', 
       '2016-01-15 16:52:00', '2016-01-15 16:53:00', 
       '2016-01-15 16:54:00', '2016-01-15 16:55:00', 
       '2016-01-15 16:56:00', '2016-01-15 16:57:00', 
       '2016-01-15 16:58:00', '2016-01-15 16:59:00'], 
       dtype='datetime64[ns]', length=5940, freq=None) 

import numpy as np 
np.in1d(index.date, calendar) 

ここで、calendarnumpyの配列datetimeのオブジェクトになります。

関連する問題