2014-11-27 2 views
0

Я создал файл hd5 поЗапросы к HDF-магазин

hdf=pandas.HDFStore(pfad) 
hdf.append('df', df, data_columns=True) 

У меня есть список, который содержит значение numpy.datetime64 называемого и истечение срока действия попытаться прочитать часть таблицы hd5 в dataframe, что имеет значение между истечениями [1] и истечения [0] в столбце «expiration». Записи истечения столбца имеют формат Timestamp ('2002-05-18 00:00:00').

Я использую следующую команду:

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

Однако я получаю ValueError: Невозможно разобрать й Как это должно быть сделано правильно?

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 

Существует больше столбцов, но они не представляют интереса для запроса.

+0

должен быть строкой, а не с кортежем, и у вас есть ошибочное имя – Jeff

+0

, также полезно показать df.info() и вашу версию pandas – Jeff

+0

, действительно, эта ошибка написана также в моем фрагменте кода. Теперь это ошибка: ValueError: невозможно обработать выражение [expiration = expirations [0]], [((expiration) <(2002-06-22T02: 00: 00.000000000 + 0200)) & ((expiration)> = (2002-05-18T02: 00: 00.000000000 + 0200))] не является действительным условием Версия для Pandas: 0.14.0 df.info: [3233578 rows x 9 columns] – user3276418

ответ

0

Проблема решена!

я получил по истечению срока

df_expirations=df.drop_duplicates(subset='expiration') 
expirations=df['expiration'].values 

Это, очевидно, изменил формат числа с DateTime в TZ DateTime. Я reingeneered это с помощью

expirations=df['expirations'] 

Сейчас этот запрос работает: дель ДФ ДФ = hdf.select ('ДФ', где = ('= истечения истечения срока действия [1]'))

Спасибо, что указали на проблему формата datetime.

Смежные вопросы