2016-12-29 6 views
1

エポックタイムとしてインデックスが保存されたHDFStoreにpandasデータフレームがあります。私は特定のインデックスに基づいてデータとクエリを読みたい。例えばエポックタイムのインデックス付きHDFStore

- 私は代わりEPOCのdatetime64 [NS]でインデックスを持っている場合、私は結果を得ることができる:

starttime = datetime.datetime(2008,12,22,00,19,55,150000) 

start = pd.Timestamp(stoptime) + pd.Timedelta(1) 

stoptime = datetime.datetime(2008,12,22,00,55,55,180000) 

stop = pd.Timestamp(starttime) + pd.Timedelta(1) 

pd.read_hdf('file.h5',columns=['Data','Qty'],where='index > start & index < stop'] 

HDFStoreでインデックスがエポック時間として格納されている場合どのように同じ結果を達成することができます?

答えて

0

IIUCの場合、startstop回をepochに変換してクエリを実行する必要があります。これを行うには、次の操作を実行します。

start_epoch = (start - datetime.datetime(1970,1,1)).total_seconds() 
stop_epoch = (stop - datetime.datetime(1970,1,1)).total_seconds() 

次に、それらを使用してクエリを実行できるはずです。あなたのデータを使用する:

In [24]: (start - datetime.datetime(1970,1,1)).total_seconds() 
Out[24]: 1229905195.15 

In [27]: (stop - datetime.datetime(1970,1,1)).total_seconds() 
Out[27]: 1229907355.18 

編集:より一般的な問題。 numpyのdatetime64オブジェクトの場合は、最初に、プレーンdatetimeに変換することができます:

In [16]: abc = np.datetime64('2005-12-27 20:10:10.500400300', 'ns') 

In [17]: a = pd.to_datetime(abc) 

In [18]: a 
Out[18]: Timestamp('2005-12-27 20:10:10.500400300') 

その後は、上記の方法を使用することができます。

+0

これは私に正確な結果を与えません。 epocの時間を取得する簡単な方法はありますか?例えば:私は – Sun

+0

を持っています。私はabc = np.datetime64( '2005-12-27 20:10:10.500400300'、 'ns')...これについてはどうすればよいでしょうか? – Sun

+0

もう少し詳しい情報で答えを編集しました。これは私にとってはむしろ単純なようですが、それがあなたのために働くかどうかを教えてください、ありがとう! –

関連する問題