pyarrow数据集过滤具有多种条件



我有一个分区的镶木地板数据集,我正试图将其读取到pandas数据帧中。完整的镶木地板数据集不适合内存,所以我只需要选择一些分区(分区列为Year、Month和Date

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

"2020804";似乎不是有效日期,您缺少一个零。

最新更新