Datasets 文档

表类

Hugging Face's logo
加入 Hugging Face 社区

并获得增强的文档体验

开始使用

表类

每个 Dataset 对象都由一个 PyArrow 表支持。表可以从磁盘(内存映射)或内存中加载。有几种表类型可用,它们都继承自 table.Table

Table

class datasets.table.Table

< >

( table: Table )

通过组合方式包装一个 pyarrow 表。这是 InMemoryTableMemoryMappedTableConcatenationTable 的基类。

它实现了 pyarrow 表类的所有基本属性/方法,但表的转换方法除外:slice、filter、flatten、combine_chunks、cast、add_column、append_column、remove_column、set_column、rename_columnsdrop

这些方法的实现在子类中有所不同。

validate

< >

( *args **kwargs )

参数

  • full (bool,默认为 False) — 如果为 True,运行开销大的检查,否则仅运行开销小的检查。

引发

pa.lib.ArrowInvalid

  • pa.lib.ArrowInvalid — 如果验证失败

执行验证检查。如果验证失败,则会引发异常。

默认情况下,只运行开销小的验证检查。传入 full=True 进行彻底的验证检查(可能为 O(n))。

equals

< >

( *args **kwargs ) bool

参数

  • other (Table) — 用于比较的表。
  • check_metadata bool,默认为 False) — 是否也检查模式元数据的相等性。

返回

布尔值

检查两个表的内容是否相等。

to_batches

< >

( *args **kwargs )

参数

  • max_chunksize (int,默认为 None) — RecordBatch 块的最大大小。单个块的大小可能更小,具体取决于单个列的块布局。

将表转换为(连续的)RecordBatch 对象列表。

to_pydict

< >

( *args **kwargs ) dict

返回

字典

将表转换为 dictOrderedDict

to_pandas

< >

( *args **kwargs ) pandas.Seriespandas.DataFrame

参数

  • memory_pool (MemoryPool,默认为 None) — 用于分配内存的 Arrow MemoryPool。如果未传递,则使用默认的内存池。
  • strings_to_categorical (bool,默认为 False) — 将字符串(UTF8)和二进制类型编码为 pandas.Categorical
  • categories (list,默认为 空列表) — 应作为 pandas.Categorical 返回的字段列表。仅适用于类表数据结构。
  • zero_copy_only (bool,默认为 False) — 如果此函数调用需要复制底层数据,则引发 ArrowException
  • integer_object_nulls (bool,默认为 False) — 将带空值的整数转换为对象。
  • date_as_object (bool,默认为 True) — 将日期转换为对象。如果为 False,则转换为 datetime64[ns] 类型。
  • timestamp_as_object (bool,默认为 False) — 将非纳秒时间戳 (np.datetime64) 转换为对象。如果您有不适合纳秒时间戳正常日期范围(公元 1678 年 - 公元 2262 年)的时间戳,这会很有用。如果为 False,则所有时间戳都将转换为 datetime64[ns] 类型。
  • use_threads (bool,默认为 True) — 是否使用多线程并行化转换。
  • deduplicate_objects (bool,默认为 False) — 创建时不要创建 Python 对象的多个副本,以节省内存使用。转换速度会变慢。
  • ignore_metadata (bool,默认为 False) — 如果为 True,不使用 ‘pandas’ 元数据来重建 DataFrame 索引(如果存在)。
  • safe (bool,默认为 True) — 对于某些数据类型,需要进行类型转换才能将数据存储在 pandas DataFrame 或 Series 中(例如,时间戳在 pandas 中总是存储为纳秒)。此选项控制它是否是安全转换。
  • split_blocks (bool,默认为 False) — 如果为 True,在从 RecordBatchTable 创建 pandas.DataFrame 时,为每列生成一个内部“块”。虽然这可以暂时减少内存,但请注意,各种 pandas 操作可能会触发“合并”,这可能会导致内存使用量激增。
  • self_destruct (bool,默认为 False) — 实验性功能:如果为 True,在将 Arrow 对象转换为 pandas 时尝试释放原始 Arrow 内存。如果您在使用此选项调用 to_pandas 后再使用该对象,将会导致程序崩溃。
  • types_mapper (function,默认为 None) — 一个将 pyarrow DataType 映射到 pandas ExtensionDtype 的函数。这可用于覆盖内置 pyarrow 类型的默认 pandas 类型转换,或在表模式中缺少 pandas_metadata 时使用。该函数接收一个 pyarrow DataType,并期望返回一个 pandas ExtensionDtype,或者如果该类型应使用默认转换,则返回 None。如果您有一个字典映射,可以传递 dict.get 作为函数。

返回

pandas.Seriespandas.DataFrame

pandas.Seriespandas.DataFrame,取决于对象类型。

酌情转换为与 pandas 兼容的 NumPy 数组或 DataFrame。

to_string

< >

( *args **kwargs )

field

< >

( *args **kwargs )

参数

  • i (Union[int, str]) — 要检索的字段的索引或名称。

通过列名或数字索引选择一个模式字段。

column

< >

( *args **kwargs )

参数

  • i (Union[int, str]) — 要检索的列的索引或名称。

通过列名或数字索引选择一列。

itercolumns

< >

( *args **kwargs )

按数值顺序迭代所有列的迭代器。

schema

< >

( )

表及其列的模式。

columns

< >

( )

按数值顺序排列的所有列的列表。

num_columns

< >

( )

此表中的列数。

num_rows

< >

( )

此表中的行数。

根据表的定义,所有列具有相同的行数。

shape

< >

( ) (int, int)

返回

(int, int)

行数和列数。

表的维度:(#行数, #列数)。

nbytes

< >

( )

表元素所消耗的总字节数。

InMemoryTable

class datasets.table.InMemoryTable

< >

( table: Table )

当表被加载到用户的 RAM 中时,该表被称为内存中的表。

对其进行 Pickling 操作会使用内存复制所有数据。它的实现很简单,直接使用底层的 pyarrow 表方法。

这与 MemoryMapped 表不同,对于后者,Pickling 不会将所有数据复制到内存中。对于 MemoryMapped,unpickling 操作会从磁盘重新加载表。

当数据适合内存时,必须使用 InMemoryTable,而 MemoryMapped 则保留用于比内存更大的数据,或者当您希望应用程序的内存占用保持较低时。

validate

< >

( *args **kwargs )

参数

  • full (bool,默认为 False) — 如果为 True,运行开销大的检查,否则仅运行开销小的检查。

引发

pa.lib.ArrowInvalid

  • pa.lib.ArrowInvalid — 如果验证失败

执行验证检查。如果验证失败,则会引发异常。

默认情况下,只运行开销小的验证检查。传入 full=True 进行彻底的验证检查(可能为 O(n))。

equals

< >

( *args **kwargs ) bool

参数

  • other (Table) — 用于比较的表。
  • check_metadata (bool, 默认为 False) — 是否也检查 schema 元数据是否相等。

返回

布尔值

检查两个表的内容是否相等。

to_batches

< >

( *args **kwargs )

参数

  • max_chunksize (int, 默认为 None) — RecordBatch 块的最大尺寸。根据各个列的块布局,单个块可能会更小。

将表转换为(连续的)RecordBatch 对象列表。

to_pydict

< >

( *args **kwargs ) dict

返回

字典

将表转换为 dictOrderedDict

to_pandas

< >

( *args **kwargs ) pandas.Seriespandas.DataFrame

参数

  • memory_pool (MemoryPool, 默认为 None) — 用于分配内存的 Arrow MemoryPool。如果未传递,则使用默认内存池。
  • strings_to_categorical (bool, 默认为 False) — 将字符串(UTF8)和二进制类型编码为 pandas.Categorical
  • categories (list, 默认为 空列表) — 应作为 pandas.Categorical 返回的字段列表。仅适用于类似表的数据结构。
  • zero_copy_only (bool, 默认为 False) — 如果此函数调用需要复制底层数据,则引发 ArrowException
  • integer_object_nulls (bool, 默认为 False) — 将带空值的整数转换为对象。
  • date_as_object (bool, 默认为 True) — 将日期转换为对象。如果为 False,则转换为 datetime64[ns] dtype。
  • timestamp_as_object (bool, 默认为 False) — 将非纳秒级的时间戳(np.datetime64)转换为对象。这对于处理不适合纳秒级时间戳正常日期范围(公元 1678 年至 2262 年)的时间戳非常有用。如果为 False,所有时间戳都将转换为 datetime64[ns] dtype。
  • use_threads (bool, 默认为 True) — 是否使用多线程并行化转换。
  • deduplicate_objects (bool, 默认为 False) — 创建时不要为 Python 对象创建多个副本,以节省内存使用。转换速度会变慢。
  • ignore_metadata (bool, 默认为 False) — 如果为 True,则不使用 'pandas' 元数据来重建 DataFrame 索引(如果存在)。
  • safe (bool, 默认为 True) — 对于某些数据类型,需要进行转换才能将其存储在 pandas DataFrame 或 Series 中(例如,时间戳在 pandas 中总是以纳秒为单位存储)。此选项控制这是否为安全转换。
  • split_blocks (bool, 默认为 False) — 如果为 True,在从 RecordBatchTable 创建 pandas.DataFrame 时,为每列生成一个内部“块”。虽然这可以暂时减少内存使用,但请注意,各种 pandas 操作可能会触发“合并”,从而可能导致内存使用量激增。
  • self_destruct (bool, 默认为 False) — 实验性功能:如果为 True,在将 Arrow 对象转换为 pandas 时,尝试释放原始 Arrow 内存。如果在使用此选项调用 to_pandas 后再使用该对象,程序将会崩溃。
  • types_mapper (function, 默认为 None) — 一个将 pyarrow DataType 映射到 pandas ExtensionDtype 的函数。这可以用于覆盖内置 pyarrow 类型的默认 pandas 类型转换,或者在表 schema 中缺少 pandas_metadata 时使用。该函数接收一个 pyarrow DataType,并应返回一个 pandas ExtensionDtype,如果该类型应使用默认转换,则返回 None。如果你有一个映射字典,可以将 dict.get 作为函数传递。

返回

pandas.Seriespandas.DataFrame

pandas.Seriespandas.DataFrame,取决于对象类型。

酌情转换为与 pandas 兼容的 NumPy 数组或 DataFrame。

to_string

< >

( *args **kwargs )

field

< >

( *args **kwargs )

参数

  • i (Union[int, str]) — 要检索的字段的索引或名称。

通过列名或数字索引选择一个模式字段。

column

< >

( *args **kwargs )

参数

  • i (Union[int, str]) — 要检索的列的索引或名称。

通过列名或数字索引选择一列。

itercolumns

< >

( *args **kwargs )

按数值顺序迭代所有列的迭代器。

schema

< >

( )

表及其列的模式。

columns

< >

( )

按数值顺序排列的所有列的列表。

num_columns

< >

( )

此表中的列数。

num_rows

< >

( )

此表中的行数。

根据表的定义,所有列具有相同的行数。

shape

< >

( ) (int, int)

返回

(int, int)

行数和列数。

表的维度:(#行数, #列数)。

nbytes

< >

( )

表元素所消耗的总字节数。

column_names

< >

( )

表的列名。

slice

< >

( offset = 0 length = None )

参数

  • offset (int, 默认为 0) — 从表开头切片的偏移量。
  • length (int, 默认为 None) — 切片的长度(默认为从偏移量开始直到表尾)。

计算此表的零拷贝切片。

过滤器

< >

( *args **kwargs )

从表中选择记录。有关完整用法,请参阅 pyarrow.compute.filter

flatten

< >

( *args **kwargs )

参数

  • memory_pool (MemoryPool, 默认为 None) — 用于内存分配(如果需要),否则使用默认池。

展平此表。每个具有结构体类型的列都被展平为每个结构体字段一列。其他列保持不变。

combine_chunks

< >

( *args **kwargs )

参数

  • memory_pool (MemoryPool, 默认为 None) — 用于内存分配(如果需要),否则使用默认池。

通过组合此表所拥有的块来创建一个新表。

每列 ChunkedArray 中的所有底层块都被连接成零个或一个块。

cast

< >

( *args **kwargs )

参数

  • target_schema (Schema) — 要转换到的 schema,字段的名称和顺序必须匹配。
  • safe (bool, 默认为 True) — 检查溢出或其他不安全的转换。

将表值转换为另一个 schema。

replace_schema_metadata

< >

( *args **kwargs ) datasets.table.Table

参数

  • metadata (dict, 默认为 None) —

返回

datasets.table.Table

shallow_copy

实验性功能:通过将 schema 键值元数据替换为指定的新元数据(可以是 None,表示删除任何现有元数据),创建表的浅拷贝。

add_column

< >

( *args **kwargs ) datasets.table.Table

参数

  • i (int) — 放置列的索引。
  • field_ (Union[str, pyarrow.Field]) — 如果传递的是字符串,则类型将从列数据中推断。
  • column (Union[pyarrow.Array, List[pyarrow.Array]]) — 列数据。

返回

datasets.table.Table

添加了传入列的新表。

在指定位置向表中添加一列。

返回一个添加了列的新表,原始表对象保持不变。

append_column

< >

( *args **kwargs ) datasets.table.Table

参数

  • field_ (Union[str, pyarrow.Field]) — 如果传递的是字符串,则类型将从列数据中推断。
  • column (Union[pyarrow.Array, List[pyarrow.Array]]) — 列数据。

返回

datasets.table.Table

添加了传入列的新表。

在列的末尾追加列。

remove_column

< >

( *args **kwargs ) datasets.table.Table

参数

  • i (int) — 要移除的列的索引。

返回

datasets.table.Table

不包含该列的新表。

创建一个移除了指定列的新表。

set_column

< >

( *args **kwargs ) datasets.table.Table

参数

  • i (int) — 放置列的索引。
  • field_ (Union[str, pyarrow.Field]) — 如果传递的是字符串,则类型会从列数据中推断出来。
  • column (Union[pyarrow.Array, List[pyarrow.Array]]) — 列数据。

返回

datasets.table.Table

设置了传递的列的新表。

替换表中指定位置的列。

rename_columns

< >

( *args **kwargs )

创建一个新表,其列已重命名为提供的名称。

选择

< >

( *args **kwargs ) datasets.table.Table

参数

  • columns (Union[List[str], List[int]]) — 要选择的列名或整数索引。

返回

datasets.table.Table

包含指定列的新表,并保留元数据。

选择表的列。

返回一个包含指定列的新表,并保留元数据。

drop

< >

( *args **kwargs ) datasets.table.Table

参数

  • columns (List[str]) — 引用现有列的字段名称列表。

返回

datasets.table.Table

不包含这些列的新表。

引发

KeyError

  • KeyError — :如果传递的任何列名不存在。

删除一个或多个列并返回一个新表。

from_file

< >

( filename: str )

from_buffer

< >

( buffer: Buffer )

from_pandas

< >

( *args **kwargs ) datasets.table.Table

参数

  • df (pandas.DataFrame) —
  • schema (pyarrow.Schema, 可选) — Arrow 表的预期模式。如果无法自动推断列的类型,可以使用此参数来指定。如果传递了此参数,输出将严格遵循此模式。在模式中指定但在 DataFrame 列或其索引中找不到的列将引发错误。DataFrame 中未在模式中指定的额外列或索引级别将被忽略。
  • preserve_index (bool, 可选) — 是否将索引作为结果 Table 中的附加列存储。默认值 `None` 会将索引存储为一列,但 RangeIndex 除外,它仅作为元数据存储。使用 `preserve_index=True` 强制将其存储为一列。
  • nthreads (int, 默认为 None (最多可使用系统 CPU 核心数)) — 如果大于 1,则使用指定数量的线程并行转换列为 Arrow 格式。
  • columns (List[str], 可选) — 要转换的列列表。如果为 None,则使用所有列。
  • safe (bool, 默认为 True) — 检查溢出或其他不安全的转换。

返回

datasets.table.Table

将 pandas.DataFrame 转换为 Arrow 表。

生成的 Arrow 表中的列类型是根据 DataFrame 中 pandas.Series 的 dtypes 推断的。对于非对象 Series,NumPy dtype 会被转换为其等效的 Arrow 类型。对于 `object` 类型的 Series,我们需要通过查看该 Series 中的 Python 对象来猜测数据类型。

请注意,`object` 类型的 Series 不携带足够的信息来总是能得到有意义的 Arrow 类型。在我们无法推断类型的情况下,例如因为 DataFrame 的长度为 0 或 Series 只包含 `None/nan` 对象,类型将被设置为 null。可以通过构造一个显式模式并将其传递给此函数来避免这种行为。

示例

>>> import pandas as pd
>>> import pyarrow as pa
>>> df = pd.DataFrame({
    ...     'int': [1, 2],
    ...     'str': ['a', 'b']
    ... })
>>> pa.Table.from_pandas(df)
<pyarrow.lib.Table object at 0x7f05d1fb1b40>

from_arrays

< >

( *args **kwargs )

参数

  • arrays (List[Union[pyarrow.Array, pyarrow.ChunkedArray]]) — 构成表的等长数组。
  • names (List[str], 可选) — 表列的名称。如果未传递,则必须传递 schema。
  • schema (Schema, 默认为 None) — 所创建表的模式。如果未传递,则必须传递 names。
  • metadata (Union[dict, Mapping], 默认为 None) — 模式的可选元数据(如果推断得出)。

从 Arrow 数组构造一个表。

from_pydict

< >

( *args **kwargs )

参数

  • mapping (Union[dict, Mapping]) — 从字符串到数组或 Python 列表的映射。
  • schema (Schema, 默认为 None) — 如果未传递,将从映射值中推断。
  • metadata (Union[dict, Mapping], 默认为 None) — 模式的可选元数据(如果推断得出)。

从 Arrow 数组或列构造一个表。

from_batches

< >

( *args **kwargs ) datasets.table.Table

参数

  • batches (Union[Sequence[pyarrow.RecordBatch], Iterator[pyarrow.RecordBatch]]) — 要转换的 RecordBatch 序列,所有模式必须相等。
  • schema (Schema, 默认为 None) — 如果未传递,将从第一个 RecordBatch 中推断。

返回

datasets.table.Table

从 Arrow RecordBatches 的序列或迭代器构造一个表。

MemoryMappedTable

class datasets.table.MemoryMappedTable

< >

( table: Table path: str replays: typing.Optional[list[tuple[str, tuple, dict]]] = None )

当表不使用用户的 RAM,而是从磁盘加载数据时,该表被称为内存映射表。

对其进行序列化(Pickling)不会将数据复制到内存中。相反,只会序列化内存映射 Arrow 文件的路径,以及从磁盘重新加载表时需要“重放”的转换列表。

其实现要求存储应用于底层 pyarrow 表的所有转换的历史记录,以便在从磁盘重新加载表时可以“重放”这些转换。

这与 InMemoryTable 表不同,对于后者,序列化会复制所有数据到内存中。

当数据适合内存时,必须使用 InMemoryTable,而 MemoryMapped 则保留用于比内存更大的数据,或者当您希望应用程序的内存占用保持较低时。

validate

< >

( *args **kwargs )

参数

  • full (bool, 默认为 False) — 如果为 True,则运行昂贵的检查,否则仅运行廉价的检查。

引发

pa.lib.ArrowInvalid

  • pa.lib.ArrowInvalid — 如果验证失败

执行验证检查。如果验证失败,则会引发异常。

默认情况下,只运行开销小的验证检查。传入 full=True 进行彻底的验证检查(可能为 O(n))。

equals

< >

( *args **kwargs ) bool

参数

  • other (Table) — 要比较的表。
  • check_metadata bool, 默认为 False) — 是否也检查模式元数据的相等性。

返回

布尔值

检查两个表的内容是否相等。

to_batches

< >

( *args **kwargs )

参数

  • max_chunksize (int, 默认为 None) — RecordBatch 块的最大大小。单个块的大小可能会更小,具体取决于各个列的块布局。

将表转换为(连续的)RecordBatch 对象列表。

to_pydict

< >

( *args **kwargs ) dict

返回

字典

将表转换为 dictOrderedDict

to_pandas

< >

( *args **kwargs ) pandas.Seriespandas.DataFrame

参数

  • memory_pool (MemoryPool, 默认为 None) — 用于分配的 Arrow 内存池。如果未传递,则使用默认内存池。
  • strings_to_categorical (bool, 默认为 False) — 将字符串(UTF8)和二进制类型编码为 pandas.Categorical
  • categories (list, 默认为 空列表) — 应返回为 pandas.Categorical 的字段列表。仅适用于类似表的数据结构。
  • zero_copy_only (bool, 默认为 False) — 如果此函数调用需要复制底层数据,则引发 ArrowException
  • integer_object_nulls (bool, 默认为 False) — 将带空值的整数转换为对象。
  • date_as_object (bool, 默认为 True) — 将日期转换为对象。如果为 False,则转换为 datetime64[ns] dtype。
  • timestamp_as_object (bool, 默认为 False) — 将非纳秒级时间戳(np.datetime64)转换为对象。如果您的时间戳不适合纳秒级时间戳的正常日期范围(公元 1678 年 - 公元 2262 年),这很有用。如果为 False,所有时间戳都将转换为 datetime64[ns] dtype。
  • use_threads (bool, 默认为 True) — 是否使用多个线程并行化转换。
  • deduplicate_objects (bool, 默认为 False) — 创建 Python 对象时不创建多个副本,以节省内存使用。转换速度会变慢。
  • ignore_metadata (bool, 默认为 False) — 如果为 True,则不使用 'pandas' 元数据来重建 DataFrame 索引(如果存在)。
  • safe (bool, 默认为 True) — 对于某些数据类型,需要进行转换才能将数据存储在 pandas DataFrame 或 Series 中(例如,时间戳在 pandas 中总是存储为纳秒)。此选项控制这是否是安全的转换。
  • split_blocks (bool, 默认为 False) — 如果为 True,在从 RecordBatchTable 创建 pandas.DataFrame 时,为每列生成一个内部“块”。虽然这可以暂时减少内存,但请注意,各种 pandas 操作可能会触发“合并”,从而可能导致内存使用量激增。
  • self_destruct (bool, 默认为 False) — 实验性功能:如果为 True,在将 Arrow 对象转换为 pandas 时,尝试释放原始 Arrow 内存。如果您在使用此选项调用 to_pandas 后再使用该对象,程序将会崩溃。
  • types_mapper (function, 默认为 None) — 一个将 pyarrow DataType 映射到 pandas ExtensionDtype 的函数。这可用于覆盖内置 pyarrow 类型转换的默认 pandas 类型,或者在表模式中缺少 pandas_metadata 时使用。该函数接收一个 pyarrow DataType,并应返回一个 pandas ExtensionDtype,或者如果该类型应使用默认转换,则返回 None。如果您有一个字典映射,可以传递 dict.get 作为函数。

返回

pandas.Seriespandas.DataFrame

pandas.Seriespandas.DataFrame,取决于对象类型。

酌情转换为与 pandas 兼容的 NumPy 数组或 DataFrame。

to_string

< >

( *args **kwargs )

field

< >

( *args **kwargs )

参数

  • i (Union[int, str]) — 要检索的字段的索引或名称。

通过列名或数字索引选择一个模式字段。

column

< >

( *args **kwargs )

参数

  • i (Union[int, str]) — 要检索的列的索引或名称。

通过列名或数字索引选择一列。

itercolumns

< >

( *args **kwargs )

按数值顺序迭代所有列的迭代器。

schema

< >

( )

表及其列的模式。

columns

< >

( )

按数值顺序排列的所有列的列表。

num_columns

< >

( )

此表中的列数。

num_rows

< >

( )

此表中的行数。

根据表的定义,所有列具有相同的行数。

shape

< >

( ) (int, int)

返回

(int, int)

行数和列数。

表的维度:(#行数, #列数)。

nbytes

< >

( )

表元素所消耗的总字节数。

column_names

< >

( )

表的列名。

slice

< >

( offset = 0 length = None )

参数

  • offset (int, 默认为 0) — 从表头开始切片的偏移量。
  • length (int, 默认为 None) — 切片长度 (默认从偏移量开始直到表尾)。

计算此表的零拷贝切片。

过滤器

< >

( *args **kwargs )

从表中选择记录。有关完整用法,请参阅 pyarrow.compute.filter

flatten

< >

( *args **kwargs )

参数

  • memory_pool (MemoryPool, 默认为 None) — 用于内存分配,如果需要,否则使用默认池。

展平此表。每个具有结构体类型的列都被展平为每个结构体字段一列。其他列保持不变。

combine_chunks

< >

( *args **kwargs )

参数

  • memory_pool (MemoryPool, 默认为 None) — 用于内存分配,如果需要,否则使用默认池。

通过组合此表所拥有的块来创建一个新表。

每列的ChunkedArray中所有底层的块被连接成零个或一个块。

cast

< >

( *args **kwargs )

参数

  • target_schema (Schema) — 要转换的目标模式,字段的名称和顺序必须匹配。
  • safe (bool, 默认为 True) — 检查溢出或其他不安全的转换。

将表值转换为另一个模式

replace_schema_metadata

< >

( *args **kwargs ) datasets.table.Table

参数

  • metadata (dict, 默认为 None) —

返回

datasets.table.Table

shallow_copy

实验性功能:通过用指定的新元数据替换模式键值元数据来创建表的浅拷贝(新元数据可以为 None,这将删除任何现有的元数据)。

add_column

< >

( *args **kwargs ) datasets.table.Table

参数

  • i (int) — 放置列的索引。
  • field_ (Union[str, pyarrow.Field]) — 如果传入字符串,则类型从列数据中推断。
  • column (Union[pyarrow.Array, List[pyarrow.Array]]) — 列数据。

返回

datasets.table.Table

添加了传入列的新表。

在指定位置向表中添加一列。

返回一个添加了列的新表,原始表对象保持不变。

append_column

< >

( *args **kwargs ) datasets.table.Table

参数

  • field_ (Union[str, pyarrow.Field]) — 如果传入字符串,则类型从列数据中推断。
  • column (Union[pyarrow.Array, List[pyarrow.Array]]) — 列数据。

返回

datasets.table.Table

添加了传入列的新表。

在列的末尾追加列。

remove_column

< >

( *args **kwargs ) datasets.table.Table

参数

  • i (int) — 要删除的列的索引。

返回

datasets.table.Table

不包含该列的新表。

创建一个移除了指定列的新表。

set_column

< >

( *args **kwargs ) datasets.table.Table

参数

  • i (int) — 放置列的索引。
  • field_ (Union[str, pyarrow.Field]) — 如果传入字符串,则类型从列数据中推断。
  • column (Union[pyarrow.Array, List[pyarrow.Array]]) — 列数据。

返回

datasets.table.Table

设置了传递的列的新表。

替换表中指定位置的列。

rename_columns

< >

( *args **kwargs )

创建一个新表,其列已重命名为提供的名称。

选择

< >

( *args **kwargs ) datasets.table.Table

参数

  • columns (Union[List[str], List[int]]) — 要选择的列名或整数索引。

返回

datasets.table.Table

包含指定列的新表,并保留元数据。

选择表的列。

返回一个包含指定列的新表,并保留元数据。

drop

< >

( *args **kwargs ) datasets.table.Table

参数

  • columns (List[str]) — 引用现有列的字段名称列表。

返回

datasets.table.Table

不包含这些列的新表。

引发

KeyError

  • KeyError — :如果传递的任何列名不存在。

删除一个或多个列并返回一个新表。

from_file

< >

( filename: str replays = None )

ConcatenationTable

class datasets.table.ConcatenationTable

< >

( table: Table blocks: list )

该表由多个称为块的表连接而成。它支持在轴 0 (追加行) 和轴 1 (追加列) 上的连接。

底层表被称为“块”,可以是 `InMemoryTable` 或 `MemoryMappedTable` 对象。这允许组合来自内存或内存映射的表。当 `ConcatenationTable` 被序列化时,每个块都会被序列化。

  • `InMemoryTable` 对象通过在内存中复制所有数据进行序列化。
  • MemoryMappedTable 对象在序列化时不会将数据复制到内存中。相反,只序列化内存映射箭头文件的路径,以及从磁盘重新加载表时要“重放”的转换列表。

其实现要求分别存储每个块。`blocks` 属性存储一个块的列表的列表。第一个轴沿轴 0 连接表(它追加行),而第二个轴沿轴 1 连接表(它追加列)。

如果在轴 0 上连接时某些列缺失,它们将被填充为 null 值。这是通过 `pyarrow.concat_tables(tables, promote=True)` 实现的。

你可以通过访问 `ConcatenationTable.table` 属性来访问完全组合的表,通过访问 `ConcatenationTable.blocks` 属性来访问块。

validate

< >

( *args **kwargs )

参数

  • full (bool, 默认为 False) — 如果为 `True`,则运行昂贵的检查,否则只运行廉价的检查。

引发

pa.lib.ArrowInvalid

  • pa.lib.ArrowInvalid — 如果验证失败

执行验证检查。如果验证失败,则会引发异常。

默认情况下,只运行开销小的验证检查。传入 full=True 进行彻底的验证检查(可能为 O(n))。

equals

< >

( *args **kwargs ) bool

参数

  • other (Table) — 用于比较的表。
  • check_metadata bool, 默认为 False) — 是否也检查模式元数据的相等性。

返回

布尔值

检查两个表的内容是否相等。

to_batches

< >

( *args **kwargs )

参数

  • max_chunksize (int, 默认为 None) — `RecordBatch` 块的最大尺寸。单个块可能更小,具体取决于各个列的块布局。

将表转换为(连续的)RecordBatch 对象列表。

to_pydict

< >

( *args **kwargs ) dict

返回

字典

将表转换为 dictOrderedDict

to_pandas

< >

( *args **kwargs ) pandas.Seriespandas.DataFrame

参数

  • memory_pool (MemoryPool, 默认为 None) — 用于分配的 Arrow 内存池。如果未传递,则使用默认内存池。
  • strings_to_categorical (bool, 默认为 False) — 将字符串(UTF8)和二进制类型编码为 `pandas.Categorical`。
  • categories (list, 默认为 空列表) — 应返回为 `pandas.Categorical` 的字段列表。仅适用于类似表的数据结构。
  • zero_copy_only (bool, 默认为 False) — 如果此函数调用需要复制底层数据,则引发 `ArrowException`。
  • integer_object_nulls (bool, 默认为 False) — 将带有空值的整数转换为对象。
  • date_as_object (bool, 默认为 True) — 将日期转换为对象。如果为 `False`,则转换为 `datetime64[ns]` dtype。
  • timestamp_as_object (bool, 默认为 False) — 将非纳秒级时间戳 (np.datetime64) 转换为对象。如果您的时间戳不适合纳秒级时间戳的正常日期范围(公元 1678 年至公元 2262 年),此选项非常有用。如果为 False,所有时间戳都将转换为 datetime64[ns] dtype。
  • use_threads (bool, 默认为 True) — 是否使用多线程并行转换。
  • deduplicate_objects (bool, 默认为 False) — 创建 Python 对象时不创建多个副本,以节省内存使用。转换速度会变慢。
  • ignore_metadata (bool, 默认为 False) — 如果为 True,则在存在 'pandas' 元数据时,不使用它来重建 DataFrame 索引。
  • safe (bool, 默认为 True) — 对于某些数据类型,需要进行类型转换才能将其存储在 pandas DataFrame 或 Series 中(例如,时间戳在 pandas 中总是以纳秒为单位存储)。此选项控制转换是否为安全转换。
  • split_blocks (bool, 默认为 False) — 如果为 True,则从 RecordBatchTable 创建 pandas.DataFrame 时,为每一列生成一个内部“块”。虽然这可以暂时减少内存使用,但请注意,各种 pandas 操作可能会触发“合并”,从而导致内存使用量激增。
  • self_destruct (bool, 默认为 False) — 实验性功能:如果为 True,则在将 Arrow 对象转换为 pandas 时,尝试释放原始 Arrow 内存。如果在使用此选项调用 to_pandas 后再使用该对象,程序将会崩溃。
  • types_mapper (function, 默认为 None) — 将 pyarrow DataType 映射到 pandas ExtensionDtype 的函数。此选项可用于覆盖内置 pyarrow 类型的默认 pandas 类型转换,或在 Table 模式中缺少 pandas_metadata 时使用。该函数接收一个 pyarrow DataType,并应返回一个 pandas ExtensionDtype,或者如果应使用该类型的默认转换,则返回 None。如果您有字典映射,可以传递 dict.get 作为函数。

返回

pandas.Seriespandas.DataFrame

pandas.Seriespandas.DataFrame,取决于对象类型。

酌情转换为与 pandas 兼容的 NumPy 数组或 DataFrame。

to_string

< >

( *args **kwargs )

field

< >

( *args **kwargs )

参数

  • i (Union[int, str]) — 要检索的字段的索引或名称。

通过列名或数字索引选择一个模式字段。

column

< >

( *args **kwargs )

参数

  • i (Union[int, str]) — 要检索的列的索引或名称。

通过列名或数字索引选择一列。

itercolumns

< >

( *args **kwargs )

按数值顺序迭代所有列的迭代器。

schema

< >

( )

表及其列的模式。

columns

< >

( )

按数值顺序排列的所有列的列表。

num_columns

< >

( )

此表中的列数。

num_rows

< >

( )

此表中的行数。

根据表的定义,所有列具有相同的行数。

shape

< >

( ) (int, int)

返回

(int, int)

行数和列数。

表的维度:(#行数, #列数)。

nbytes

< >

( )

表元素所消耗的总字节数。

column_names

< >

( )

表的列名。

slice

< >

( offset = 0 length = None )

参数

  • offset (int, 默认为 0) — 从表开头到切片的偏移量。
  • length (int, 默认为 None) — 切片的长度(默认为从偏移量开始直到表尾)。

计算此表的零拷贝切片。

过滤器

< >

( mask *args **kwargs )

从表中选择记录。有关完整用法,请参阅 pyarrow.compute.filter

flatten

< >

( *args **kwargs )

参数

  • memory_pool (MemoryPool, 默认为 None) — 用于内存分配(如果需要),否则使用默认池。

展平此表。每个具有结构体类型的列都被展平为每个结构体字段一列。其他列保持不变。

combine_chunks

< >

( *args **kwargs )

参数

  • memory_pool (MemoryPool, 默认为 None) — 用于内存分配(如果需要),否则使用默认池。

通过组合此表所拥有的块来创建一个新表。

每列 ChunkedArray 中的所有底层块都被连接成零个或一个块。

cast

< >

( target_schema *args **kwargs )

参数

  • target_schema (Schema) — 要转换到的模式,字段的名称和顺序必须匹配。
  • safe (bool, 默认为 True) — 检查溢出或其他不安全的转换。

将表值转换为另一个 schema。

replace_schema_metadata

< >

( *args **kwargs ) datasets.table.Table

参数

  • metadata (dict, 默认为 None) —

返回

datasets.table.Table

shallow_copy

实验性功能:通过将 schema 键值元数据替换为指定的新元数据(可以是 None,表示删除任何现有元数据),创建表的浅拷贝。

add_column

< >

( *args **kwargs ) datasets.table.Table

参数

  • i (int) — 放置列的索引。
  • field_ (Union[str, pyarrow.Field]) — 如果传递的是字符串,则类型从列数据中推断。
  • column (Union[pyarrow.Array, List[pyarrow.Array]]) — 列数据。

返回

datasets.table.Table

添加了传入列的新表。

在指定位置向表中添加一列。

返回一个添加了列的新表,原始表对象保持不变。

append_column

< >

( *args **kwargs ) datasets.table.Table

参数

  • field_ (Union[str, pyarrow.Field]) — 如果传递的是字符串,则类型从列数据中推断。
  • column (Union[pyarrow.Array, List[pyarrow.Array]]) — 列数据。

返回

datasets.table.Table

添加了传入列的新表。

在列的末尾追加列。

remove_column

< >

( i *args **kwargs ) datasets.table.Table

参数

  • i (int) — 要移除的列的索引。

返回

datasets.table.Table

不包含该列的新表。

创建一个移除了指定列的新表。

set_column

< >

( *args **kwargs ) datasets.table.Table

参数

  • i (int) — 放置列的索引。
  • field_ (Union[str, pyarrow.Field]) — 如果传递的是字符串,则类型从列数据中推断。
  • column (Union[pyarrow.Array, List[pyarrow.Array]]) — 列数据。

返回

datasets.table.Table

设置了传递的列的新表。

替换表中指定位置的列。

rename_columns

< >

( names *args **kwargs )

创建一个新表,其列已重命名为提供的名称。

选择

< >

( columns *args **kwargs ) datasets.table.Table

参数

  • columns (Union[List[str], List[int]]) — 要选择的列名或整数索引。

返回

datasets.table.Table

包含指定列的新表,并保留元数据。

选择表的列。

返回一个包含指定列的新表,并保留元数据。

drop

< >

( columns *args **kwargs ) datasets.table.Table

参数

  • columns (List[str]) — 引用现有列的字段名称列表。

返回

datasets.table.Table

不包含这些列的新表。

引发

KeyError

  • KeyError — :如果传递的任何列名不存在。

删除一个或多个列并返回一个新表。

from_blocks

< >

( blocks: ~TableBlockContainer )

from_tables

< >

( tables: list axis: int = 0 )

参数

  • tables (Table 列表或 pyarrow.Table 列表) — 表的列表。
  • axis ({0, 1}, 默认为 0, 表示按行) — 连接的轴,其中 0 表示按行(垂直)连接,1 表示按列(水平)连接。

    1.6.0 版本中新增

从表列表中创建 ConcatenationTable

实用工具

datasets.table.concat_tables

< >

( tables: list axis: int = 0 ) datasets.table.Table

参数

  • tables (Table 列表) — 要连接的表的列表。
  • axis ({0, 1},默认为 0,表示按行连接) — 用于连接的轴,其中 0 表示按行(垂直)连接,1 表示按列(水平)连接。

    1.6.0 版本中新增

返回

datasets.table.Table

如果输入表的数量 > 1,则返回的表是一个 datasets.table.ConcatenationTable。否则,如果只有一个表,则按原样返回。

连接表。

datasets.table.list_table_cache_files

< >

( table: Table ) List[str]

返回

List[str]

由表加载的缓存文件的路径列表。

获取由表加载的缓存文件。当表的部分内容通过内存映射从磁盘加载时,会使用缓存文件。

< > 在 GitHub 上更新