【问题标题】:Reading index based range from Parquet File using Python使用 Python 从 Parquet 文件中读取基于索引的范围
【发布时间】:2021-03-05 08:27:53
【问题描述】:

我正在尝试从 parquet 文件中读取一系列数据(例如第 1000 到 5000 行)。我已经尝试过使用 fastparquet 引擎甚至 pyarraw 的 pandas,但似乎找不到任何选项。

有什么办法可以做到吗?

【问题讨论】:

  • 您的 parquet 文件中有行组吗?

标签: python pandas parquet pyarrow fastparquet


【解决方案1】:

我认为当前的 pyarrow 版本(2.0)不支持它。

文件切片最接近的方法是使用read_tablefilters 参数。

过滤器(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)])

【讨论】:

    猜你喜欢
    • 2014-08-20
    • 1970-01-01
    • 2018-07-23
    • 2021-03-31
    • 2015-10-23
    • 2021-04-20
    • 2020-03-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多