查询HDF商店

时间:2014-11-27 16:04:03

标签: pandas hdf

我通过

创建了一个hd5文件
hdf=pandas.HDFStore(pfad)
hdf.append('df', df, data_columns=True)

我有一个包含名为expirations的numpy.datetime64值的列表,并尝试将hd5表的一部分读入数据帧,该数据帧在expiration [1]和Explirations [0]之间的值为“expiration”。列到期条目的格式为Timestamp('2002-05-18 00:00:00')。

我使用以下命令:

df=hdf.select('df', where=('expiration<expiration[1] & expiration>=expirations[0]'))

但是,我得到ValueError:无法解析x 该如何正确完成?

df.dtypes
Out[37]: 
adjusted stock close price           float64
expiration                    datetime64[ns]
strike                                 int64
call put                              object
ask                                  float64
bid                                  float64
volume                                 int64
open interest                          int64
unadjusted stock price               float64

df.info
Out[36]: 
<bound method DataFrame.info of             adjusted stock close price expiration  strike call put      ask  date                                                                          
2002-05-16                     5047.00 2002-05-18    4300        C  802.000   

有更多列,但它们对查询不感兴趣。

1 个答案:

答案 0 :(得分:0)

问题解决了!

我通过

获得了到期
 df_expirations=df.drop_duplicates(subset='expiration')
 expirations=df['expiration'].values

这显然将数字格式从datetime更改为tz datetime。 我通过使用

重新开发了这个
 expirations=df['expirations']

现在这个查询正在运行:     del df     df = hdf.select('df',where =('expiration = expirations [1]'))

感谢您指出日期时间格式问题。