фильтрация набора данных pyarrow с несколькими условиями - PullRequest
0 голосов
/ 07 августа 2020

У меня есть секционированный набор данных паркета, который я пытаюсь прочитать во фрейм данных pandas. Полный набор данных паркета не помещается в память, поэтому мне нужно выбрать только некоторые разделы (столбцы разделов - это год, месяц и дата. У меня есть следующее:

pd.read_parquet(
    path_to_dataset,
    filters=[("Date", ">=", "20200715"), ("Date", "<=", "2020804")]
)

Когда я запускаю это, я получаю ошибка памяти / программа python вылетает. Но когда я запускаю следующее, она работает без проблем, хотя теоретически она вернет точно такой же объем данных (мой набор данных останавливается 4-го числа).

pd.read_parquet(
    path_to_dataset,
    filters=[("Date", ">=", "20200715")]
)

Кажется, что второй фильтр ("Date", "<=", "2020804") имеет приоритет над первым и не рассматривается как составное выражение. В моем текущем варианте использования я могу просто удалить второй фильтр, но у меня есть другие, где данные будут больше посередине всего диапазона, и без второго фильтра я бы снова стал читать слишком много.

Я безуспешно пробовал каждое из следующих действий.

(("Date", ">=", "20200715") & ("Date", "<=", "2020804"))
("Date", ">=", "20200715", "Date", "<=", "2020804")

Есть ли способ справиться Составные выражения в том же разделе / ​​столбце?

Справочная документация здесь: https://arrow.apache.org/docs/python/dataset.html

1 Ответ

3 голосов
/ 07 августа 2020

«2020804» не кажется действительной датой, вы пропустили ноль.

...