Как отфильтровать (без загрузки всего набора данных) данные при чтении из файла 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
.