pyarrow.parquet.read_pandas#

pyarrow.parquet.read_pandas(source, columns=None, **kwargs)[source]#

从 Parquet 格式读取一个 Table,如果文件元数据中已知 DataFrame 的索引值,也会将其一并读取。

参数:
sourcestr, list of str, pyarrow.NativeFile, 或类文件对象

如果传入的是字符串,可以是单个文件名或目录名。如果传入的是字符串列表,则应为文件名列表。对于类文件对象,仅读取单个文件。使用 pyarrow.BufferReader 读取包含在字节或类缓冲对象中的文件。

columnslist

如果不为 None,则仅从文件中读取这些列。列名可以是嵌套字段的前缀,例如“a”将选择“a.b”、“a.c”和“a.d.e”。如果为空,则不读取任何列。请注意,即使没有读取任何列,表格仍会设置正确的 num_rows。

use_threadsbool, 默认 True

执行多线程列读取。

schemaSchema,可选

可选地提供 Parquet 数据集的 Schema,在这种情况下,它将不会从源中推断。

read_dictionarylist, 默认值 None

要直接读取为 DictionaryArray 的名称列表或列路径(针对嵌套类型)。仅支持 BYTE_ARRAY 存储。要将扁平列读取为字典编码,请传递列名。对于嵌套类型,您必须传递完整的列“路径”,例如 level1.level2.list.item。请参阅 Parquet 文件的 schema 以获取路径。

binary_typepyarrow.DataType, 默认值 None

如果给定,Parquet 二进制列将以此数据类型读取。如果在 Parquet 元数据中找到序列化的 Arrow schema,则此设置将被忽略。

list_typepyarrow.DataType子类, 默认值 None

如果给定,非 MAP 重复列将作为此数据类型(pyarrow.ListType 或 pyarrow.LargeListType)的实例读取。如果在 Parquet 元数据中找到序列化的 Arrow schema,则此设置将被忽略。

memory_mapbool, 默认值 False

如果源是文件路径,使用内存映射读取文件,这在某些环境下可以提高性能。

buffer_sizeint, 默认值 0

如果为正,则在反序列化单个列块时执行读取缓冲。否则,IO 调用将不进行缓冲。

partitioningpyarrow.dataset.Partitioningstrliststr, 默认值 “hive”

分区数据集的分区方案。默认值“hive”假定目录名采用 key=value 对的形式,如“/year=2009/month=11”。此外,也支持如“/2009/11”这样的方案,在这种情况下,你需要指定字段名称或完整的 schema。更多详细信息,请参阅 pyarrow.dataset.partitioning() 函数。

**kwargs

read_table() 的附加选项

filesystemFileSystem, 默认值 None

如果未传递任何内容,将根据路径推断。路径将尝试在本地磁盘文件系统中查找,否则将解析为 URI 以确定文件系统。

filterspyarrow.compute.ExpressionList[Tuple] 或 List[List[Tuple]], 默认值 None

不匹配筛选谓词的行将从扫描数据中移除。嵌套目录结构中嵌入的分区键将被利用,如果文件不包含匹配的行,则完全避免加载文件。支持文件内级别筛选和不同的分区方案。

谓词使用 Expression 或析取范式 (DNF) 表示,例如 [[('x', '=', 0), ...], ...]。DNF 允许对单列谓词进行任意布尔逻辑组合。最内层的元组各自描述一个单列谓词。内层谓词列表被解释为合取(AND),形成一个更具选择性的多列谓词。最后,最外层的列表将这些过滤器组合为析取(OR)。

谓词也可以作为 List[Tuple] 传递。这种形式被解释为单个合取。要在谓词中表达 OR,必须使用(首选的)List[List[Tuple]] 表示法。

每个元组的格式为:(key, op, value),用于将 keyvalue 进行比较。支持的 op 包括:===, !=, <, >, <=, >=, innot in。如果 opinnot in,则 value 必须是一个集合,例如 listsettuple

示例

使用 Expression API

import pyarrow.compute as pc
pc.field('x') = 0
pc.field('y').isin(['a', 'b', 'c'])
~pc.field('y').isin({'a', 'b'})

使用 DNF 格式

('x', '=', 0)
('y', 'in', ['a', 'b', 'c'])
('z', 'not in', {'a','b'})
ignore_prefixeslist, 可选

与这些前缀中的任何一个匹配的文件将被发现过程忽略。这与路径的基本名称匹配。默认情况下,这是 [‘.’, ‘_’]。请注意,只有当目录作为源传递时,才会发生发现。

pre_bufferbool, 默认值 True

并行合并并发出文件读取请求,以提高在高延迟文件系统(如 S3)上的性能。如果设为 True,Arrow 将使用后台 I/O 线程池。如果使用的文件系统层本身执行预读取(例如 fsspec 的 S3FS),为了获得最佳结果,请禁用预读取。

coerce_int96_timestamp_unitstr, 默认值 None

将以 INT96 格式存储的时间戳强制转换为特定分辨率(例如 'ms')。设置为 None 等同于 'ns',因此 INT96 时间戳将被推断为纳秒级时间戳。

decryption_propertiesFileDecryptionPropertiesNone

文件级解密属性。解密属性可以使用 CryptoFactory.file_decryption_properties() 创建。

thrift_string_size_limitint, 默认值 None

如果不是 None,则覆盖解码 Thrift 结构时分配的最大总字符串大小。默认限制应足以满足大多数 Parquet 文件的需求。

thrift_container_size_limitint, 默认值 None

如果不是 None,则覆盖解码 Thrift 结构时分配的最大容器总大小。默认限制应足以满足大多数 Parquet 文件的需求。

page_checksum_verificationbool, 默认值 False

如果为 True,则验证从文件中读取的每个页面的校验和。

arrow_extensions_enabledbool, 默认值 True

如果为 True,则尽可能将 Parquet 逻辑类型读取为 Arrow 扩展类型(例如,将 JSON 读取为规范的 arrow.json 扩展类型,或将 UUID 读取为规范的 arrow.uuid 扩展类型)。

返回:
pyarrow.Table

文件的内容作为一个列式 Table(包括作为列的 DataFrame 索引)