Pandas: фильтрация таблицы HDF по модулю (и другим функциям) - PullRequest
0 голосов
/ 29 января 2020

Как отфильтровать (без загрузки всего набора данных) данные при чтении из файла HDF с использованием модуля % (и, возможно, аналогичных функций, например, power **)?

Вот пример:

import pandas as pd

df = pd.DataFrame({'x': range(20)})
df.to_hdf('df.h5', 'df', format='table', data_columns=True)

pd.read_hdf('df.h5', 'df', where='x % 5 == 0')

ошибка:

TypeError: condition ``(x % 5)`` does not have a boolean type

В этом примере условия вроде x > 10 работают нормально.

Редактировать:

У меня есть обнаружил, что проблема может быть внутри Term.evaluate(), который вызывается внутри Selection.__init__(). Исходный термин делится на условие ConditionBinOp и фильтр FilterBinOp. В моем примере это разделение на [Condition : [(x % 5)]] и 0 соответственно. В случае условия 10 > 0 оно делится на [Condition : [(x > 10)]] и None.

...