55

Python の datetime オブジェクトを使用して pandas データフレームを読み取ってスライスすることはできますが、インデックスで既存の日付のみを使用する必要があります。たとえば、これは機能します:

>>> data
<class 'pandas.core.frame.DataFrame'>
DatetimeIndex: 252 entries, 2010-12-31 00:00:00 to 2010-04-01 00:00:00
Data columns:
Adj Close    252  non-null values
dtypes: float64(1)

>>> st = datetime.datetime(2010, 12, 31, 0, 0)
>>> en = datetime.datetime(2010, 12, 28, 0, 0)

>>> data[st:en]
            Adj Close
Date                 
2010-12-31     593.97
2010-12-30     598.86
2010-12-29     601.00
2010-12-28     598.92

ただし、DF に存在しない開始日または終了日を使用すると、python KeyError が発生します。

私の質問: 日付範囲のデータフレーム オブジェクトを照会するにはどうすればよいですか。開始日と終了日が DataFrame に存在しない場合でも。パンダは範囲ベースのスライスを許可しますか?

私はパンダバージョン0.10.1を使用しています

4

5 に答える 5

19

これを行うには、単純なマスクを使用できます。

date_mask = (data.index > start) & (data.index < end)
dates = data.index[date_mask]
data.ix[dates]

ちなみに、これは階層インデックスにも機能します。その場合は、または類似のものdata.indexに置き換えられます。data.index.levels[0]

于 2017-05-02T02:12:40.827 に答える