pandas HDFStore.select на мультимедийном фрейме данных - PullRequest
0 голосов
/ 20 июня 2019

Я пытаюсь загрузить подмножество кадра данных, хранящегося в хранилище HDFS, методом pd.HDFStore.select, используя условие, указанное в аргументе ключевого слова where.

Загрузка всего кадра данных и последующее использование df.queryпроисходит сбой из-за MemoryError.

Сохраненный фрейм данных (называемый shotsTof) имеет следующую структуру:

                  0     1     2     3   ....
pulseId  shotNum
72304631 0        -7   -12   -14   -23  
         2        -2    -5     1    10 
         4        -4    -1     0    -1 
         ⋮
72304632 0        -5   -10    -9    -8  
         2        -29   -25   -12    1
         4        -7    -6     0     0
         ⋮

Я попытался выполнить фильтрацию следующим образом, где group.index - это мультииндекс ста же самая структура, что и у shotsTof:

store.select('shotsTof',  where='index in group.index')

и как:

store.select('shotsTof',  where='(pulseId, shotsNum) in group.index')

, но оба не удаются с TypeError: float() argument must be a string or a number, not 'tuple'

Я также попытался "сгладить" multiIndex следующим образом(чтобы индекс (72304631, 4) отображался на 7230463104):

    idx = group.index.get_level_values(0) * 100 + group.index.get_level_values(1)
    shotsTof  = store.select('shotsTof',  where='(pulseId*100 + shotNum) in idx')

, но я получаю NotImplementedError: unsupported operand types for *and*: bool, long

Может кто-нибудь помочь мне понять эту ошибку или предложить лучший способсделать то, что я пытаюсь достичь?

Спасибо!

...