【发布时间】:2021-03-05 08:27:53
【问题描述】:
我正在尝试从 parquet 文件中读取一系列数据(例如第 1000 到 5000 行)。我已经尝试过使用 fastparquet 引擎甚至 pyarraw 的 pandas,但似乎找不到任何选项。
有什么办法可以做到吗?
【问题讨论】:
-
您的 parquet 文件中有行组吗?
标签: python pandas parquet pyarrow fastparquet
我正在尝试从 parquet 文件中读取一系列数据(例如第 1000 到 5000 行)。我已经尝试过使用 fastparquet 引擎甚至 pyarraw 的 pandas,但似乎找不到任何选项。
有什么办法可以做到吗?
【问题讨论】:
标签: python pandas parquet pyarrow fastparquet
我认为当前的 pyarrow 版本(2.0)不支持它。
文件切片最接近的方法是使用read_table 的filters 参数。
过滤器(List[Tuple] or List[List[Tuple]] or None (default)) – 与过滤谓词不匹配的行将从扫描的数据中删除。
谓词以析取范式 (DNF) 表示,例如 [[('x', '=', 0), > ...], ...]。 DNF 允许单列谓词的任意布尔逻辑组合
如果您的数据集有一个列 foo,您可以根据该列获取所需的行,请使用以下内容:
import pyarrow.parquet as pq
table = pq.read_table(filename, filters=[('foo', '>', 0)])
如果你碰巧有一列id对应你可以使用的行索引
table = pq.read_table(filename, filters=[('id', '>', 1000), ('id', '<', 5000)])
【讨论】: