Я пытаюсь загрузить подмножество кадра данных, хранящегося в хранилище 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
Может кто-нибудь помочь мне понять эту ошибку или предложить лучший способсделать то, что я пытаюсь достичь?
Спасибо!