数据集文档

表格类

Hugging Face's logo
加入Hugging Face社区

并获得增强型文档体验访问权限

开始使用

表格类

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

Table

datasets.table.Table

< >

( table: Table )

通过组合使用pyarrow Table。这是InMemoryTableMemoryMappedTableConcatenationTable的基础类。

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

这些方法的实现对于子类是不同的。

validate

< >

( *args **kwargs )

参数

  • 全检查 (bool,默认为False) — 如果为True,运行昂贵检查,否则只运行便宜检查。

抛出异常

pa.lib.ArrowInvalid

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

执行验证检查。如果验证失败,将抛出异常。

默认情况下只运行便宜验证检查。通过full=True参数进行彻底的验证检查(可能为O(n))。

equals

< >

( *args **kwargs ) bool

参数

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

返回

bool

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

to_batches

< >

( *args **kwargs )

参数

  • max_chunksize (int, 默认为 None) —— RecordBatch 数据块的最大尺寸。单个数据块的尺寸可能因各个列的块布局不同而不同。

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

to_pydict

< >

( *args **kwargs ) dict

返回

dict

将表格转换为dictOrderedDict

to_pandas

< >

( *args **kwargs ) pandas.Series

参数

  • memory_poolMemoryPool,默认值为 None) — 用于分配的 Arrow MemoryPool。未传递时使用默认内存池。
  • strings_to_categorical (bool, 默认值为 False) —— 将字符串(UTF8)和二进制类型编码为 pandas.Categorical
  • categories (list, 默认值为 empty) —— 应返回为 pandas.Categorical 的字段列表。仅适用于表格类型的数据结构。
  • zero_copy_only (bool, 默认值为 False) —— 如果此函数调用将需要复制基础数据,则引发 ArrowException
  • integer_object_nulls (bool, 默认值为 False) —— 将带有 null 的整数转换为对象。
  • date_as_objectbool,默认 True) — 将日期转换为对象。如果 False,则转换为 datetime64[ns] 类型。
  • timestamp_as_objectbool,默认 False) — 将非纳秒时间戳(np.datetime64)转换为对象。如果时间戳不适合常规的纳秒时间戳日期范围(公元1678年-2262年),则非常有用。如果 False,则所有时间戳都转换为 datetime64[ns] 类型。
  • use_threadsbool,默认 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 (函数, 默认值为 None) — 将 pyarrow DataType 映射到 pandas ExtensionDtype 的函数。这可以用来覆盖 pandas 默认类型,用于转换内置 pyarrow 类型或在没有 pandas_metadata 的情况下在 Table 模式中使用。该函数接收一个 pyarrow DataType,并期望返回一个 pandas ExtensionDtypeNone,如果应为此类型使用默认转换。如果您有一个字典映射,则可以传递 dict.get 作为函数。

返回

pd.Seriespd.DataFrame

pd.Seriespd.DataFrame,具体取决于对象类型

转换为与 pandas 兼容的 NumPy 数组或 DataFrame,视情况而定。

to_string

< >

( *args **kwargs )

字段

< >

( *args **kwargs )

参数

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

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

< >

( *args **kwargs )

参数

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

通过列名或数值索引选择列。

itercolumns

< >

( *args **kwargs )

迭代所有列,按它们的数值顺序。

schema

< >

( )

表及其列的架构。

columns

< >

( )

按顺序列出所有列。

num_columns

< >

( )

此表中列的数量。

num_rows

< >

( )

此表中的行数。

由于表的定义,所有列都有相同数量的行。

shape

< >

( ) (int, int)

返回

(int, int)

行数和列数。

表尺寸:(行数, 列数)。

nbytes

< >

( )

表元素所占用的总字节数。

InMemoryTable

datasets.table.InMemoryTable

< >

( table: Table )

表中数据被加载到用户的RAM中,称其为内存表。

序列化时会复制所有数据到内存中。它的实现简单,直接使用底层pyarrow表的序列化方法。

这不同于MemoryMapped表,对于这种表,序列化不会复制内存中的所有数据。对于MemoryMapped,反序列化反而会从磁盘重新加载表。

当数据可以放入内存时,必须使用InMemoryTable,而MemoryMapped则保留用于大于内存的数据或当您需要保持应用程序内存占低时。

validate

< >

( *args **kwargs )

参数

  • full (bool, 默认为 false) — 如果为 true,运行昂贵的检查,否则只运行便宜的检查。

抛出异常

pa.lib.ArrowInvalid

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

执行验证检查。如果验证失败,将抛出异常。

默认情况下只运行便宜验证检查。通过full=True参数进行彻底的验证检查(可能为O(n))。

equals

< >

( *args **kwargs ) bool

参数

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

返回

bool

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

to_batches

< >

( *args **kwargs )

参数

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

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

to_pydict

< >

( *args **kwargs ) dict

返回

dict

将表格转换为dictOrderedDict

to_pandas

< >

( *args **kwargs ) pandas.Series

参数

  • memory_poolMemoryPool,默认为 None) — 用于分配的 Arrow MemoryPool。如果未传递,则使用默认内存池。
  • strings_to_categorical (bool, 默认值为 False) — 将字符串(UTF8)和二进制类型编码为 pandas.Categorical
  • categories (list, 默认值为 empty) — 应返回为 pandas.Categorical 的字段列表。仅适用于表格类型数据结构。
  • zero_copy_only (bool, 默认值为 False) — 如果此函数调用需要复制底层数据,则抛出 ArrowException
  • integer_object_nulls (bool, 默认值为 False) — 将带有 null 的整数转换为对象。
  • 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) — 在创建时不要创建多个 CPU 对象的副本,以节省内存使用。转换可能较慢。
  • 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 的函数。这可以用于覆盖默认的 pandas 类型,以转换内置的 pyarrow 类型或表模式中缺少 pandas_metadata 时。函数接收一个 pyarrow DataType,并期望返回一个 pandas ExtensionDtypeNone,以使用默认的转换。如果您有一个字典映射,可以将 dict.get 作为函数传递。

返回

pd.Seriespd.DataFrame

pd.Seriespd.DataFrame,具体取决于对象类型

转换为与 pandas 兼容的 NumPy 数组或 DataFrame,视情况而定。

to_string

< >

( *args **kwargs )

字段

< >

( *args **kwargs )

参数

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

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

< >

( *args **kwargs )

参数

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

通过列名或数值索引选择列。

itercolumns

< >

( *args **kwargs )

迭代所有列,按它们的数值顺序。

schema

< >

( )

表及其列的架构。

columns

< >

( )

按顺序列出所有列。

num_columns

< >

( )

此表中列的数量。

num_rows

< >

( )

此表中的行数。

由于表的定义,所有列都有相同数量的行。

shape

< >

( ) (int, int)

返回

(int, int)

行数和列数。

表尺寸:(行数, 列数)。

nbytes

< >

( )

表元素所占用的总字节数。

列名

< >

( )

表的列名。

切片

< >

( 偏移量 = 0 长度 = None )

参数

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

计算此表的零拷贝切片。

filter

< >

( *args **kwargs )

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

flatten

( *args **kwargs )

参数

展开此表。具有结构类型的每一列将展开为每个结构字段的单独一列。其他列保持不变。

combine_chunks

( *args **kwargs )

参数

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

通过合并此表中的数据块创建一个新的表。

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

cast

< >

( *args **kwargs )

参数

  • 目标模式 (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

添加列后生成的新表格。

在指定位置向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

参数

  • (int) — 删除的列的索引.

返回

datasets.table.Table

不包含该列的新表格.

创建一个不包含指定列的新 Table.

设置列

< >

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

参数

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

返回

datasets.table.Table

设置传递的列后的新表。

在Table中的位置替换列。

rename_columns

< >

( *args **kwargs )

创建带有重新命名字段的新表。

选择

< >

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

参数

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

返回

datasets.table.Table

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

选择表格的列。

返回具有指定列和保留元数据的新表格。

删除

< >

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

参数

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

返回

datasets.table.Table

删除列后的新表。

抛出异常

键错误

  • 键错误 — 如果传入的任何列名称不存在。

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

从文件中读取

< >

( filename: str )

从缓冲区读取

< >

( buffer: Buffer )

从Pandas读取

< >

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

参数

  • df () —
  • schema (pyarrow.Schema, optional) — 期望的 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 中的 Python 对象来猜测数据类型。

请注意,object 类型的 Series 并不总是携带足够的信息来推断出有意义的 Arrow 类型。在无法推断类型的情况下,例如,DataFrame 的长度为零或 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 (列表[Union[pyarrow.Array, pyarrow.ChunkedArray]]) — 应该形成表格的等长数组。
  • names (List[str], 可选) — 表列名称。如果没有传递,必须传递模式。
  • schema (Schema, 默认为None) — 创建的表的模式。如果没有传递,必须传递名称。
  • metadata (Union[dict, Mapping], 默认为None) — 模式(如果推断出)的可选元数据。

从 Arrow 数组构建表。

from_pydict

< >

( *args **kwargs )

参数

  • mapping (Union[dict, Mapping]) — 字符串到数组或Python列表的映射。
  • schema (Schema, 默认为 None) — 如果未传递,将根据Mapping值推断
  • 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 的序列或迭代器中构建一个 Table。

MemoryMappedTable

datasets.table.MemoryMappedTable

< >

( table: Table path: str replays: Optional = None )

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

对其实施序列化并不会将数据复制到内存中。相反,只序列化了内存映射箭头文件的路径,以及“重放”时从磁盘重新加载表格时应用的变换列表。

它的实现需要存储对所有底层pyarrow Table应用的变换的历史记录,以便可以在从磁盘重新加载表格时“重放”它们。

这与InMemoryTable表格不同,对于此类表格,序列化会复制内存中的所有数据。

当数据可以放入内存时,必须使用InMemoryTable,而MemoryMapped则保留用于大于内存的数据或当您需要保持应用程序内存占低时。

validate

( *args **kwargs )

参数

抛出异常

pa.lib.ArrowInvalid

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

执行验证检查。如果验证失败,将抛出异常。

默认情况下只运行便宜验证检查。通过full=True参数进行彻底的验证检查(可能为O(n))。

equals

( *args **kwargs ) bool

参数

  • other () — 用于比较的表。
  • check_metadata 布尔值, 默认为 False) — 是否还需要检查架构元数据是否相等。

返回

bool

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

to_batches

< >

( *args **kwargs )

参数

  • max_chunksize (整型, 默认为 None) — RecordBatch块的最大大小。单个块的大小可能会根据单个列的块布局而有所不同。

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

to_pydict

< >

( *args **kwargs ) dict

返回

dict

将表格转换为dictOrderedDict

to_pandas

< >

( *args **kwargs ) pandas.Series

参数

  • memory_pool (MemoryPool, 默认值 None) — 用于分配的 Arrow MemoryPool。如果没有传递,则使用默认内存池。
  • strings_to_categorical (bool, 默认为 False) — 将字符串(UTF8)和二进制类型编码为 pandas.Categorical
  • categories (list, 默认为 empty) — 应返回为 pandas.Categorical 的字段列表。仅适用于表结构数据。
  • zero_copy_only (bool, 默认为 False) — 如果此函数调用会需要复制底层数据,则抛出 ArrowException
  • integer_object_nulls (bool, 默认为 False) — 将带有 null 的整数转换为对象。
  • date_as_object (bool, 默认为 True) — 将日期转换为对象。如果为 False,则转换为 datetime64[ns] 数据类型。
  • timestamp_as_object (bool, 默认为 False) — 将非纳秒级时间戳转换为对象。如果有时间戳无法适配纳秒级时间戳的正常日期范围(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 中)。此选项控制是否为安全转换。
  • HTML_TAG_STARTsplit_blocks(布尔值,《code>bool,默认为 False)- 如果设置为 True,在从 RecordBatchTable 创建 pandas.DataFrame 时,为每个列生成一个内部“块”。虽然这可以暂时减少内存占用,但请注意,各种 pandas 操作可能会触发“合并”,这可能会导致内存使用增加。HTML_TAG_END
  • 返回

    pd.Seriespd.DataFrame

pd.Seriespd.DataFrame,具体取决于对象类型

转换为与 pandas 兼容的 NumPy 数组或 DataFrame,视情况而定。

to_string

< >

( *args **kwargs )

字段

< >

( *args **kwargs )

参数

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

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

< >

( *args **kwargs )

参数

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

通过列名或数值索引选择列。

itercolumns

< >

( *args **kwargs )

迭代所有列,按它们的数值顺序。

schema

< >

( )

表及其列的架构。

columns

< >

( )

按顺序列出所有列。

num_columns

< >

( )

此表中列的数量。

num_rows

< >

( )

此表中的行数。

由于表的定义,所有列都有相同数量的行。

shape

< >

( ) (int, int)

返回

(int, int)

行数和列数。

表尺寸:(行数, 列数)。

nbytes

< >

( )

表元素所占用的总字节数。

列名

< >

( )

表的列名。

切片

< >

( 偏移量 = 0 长度 = None )

参数

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

计算此表的零拷贝切片。

filter

< >

( *args **kwargs )

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

flatten

< >

( *args **kwargs )

参数

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

展开此表。具有结构类型的每一列将展开为每个结构字段的单独一列。其他列保持不变。

combine_chunks

< >

( *args **kwargs )

参数

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

通过合并此表中的数据块创建一个新的表。

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

cast

< >

( *args **kwargs )

参数

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

将表值转换为另一个模式

replace_schema_metadata

< >

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

参数

  • 元数据 (dict,默认为 None) —

返回

datasets.table.Table

shallow_copy

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

add_column

< >

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

参数

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

返回

datasets.table.Table

添加列后生成的新表格。

在指定位置向Table中添加列。

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

append_column

< >

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

参数

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

返回

datasets.table.Table

添加列后生成的新表格。

在列的末尾添加列。

remove_column

< >

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

参数

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

返回

datasets.table.Table

不包含该列的新表格.

创建一个不包含指定列的新 Table.

设置列

< >

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

参数

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

返回

datasets.table.Table

设置传递的列后的新表。

在Table中的位置替换列。

rename_columns

< >

( *args **kwargs )

创建带有重新命名字段的新表。

选择

< >

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

参数

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

返回

datasets.table.Table

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

选择表格的列。

返回具有指定列和保留元数据的新表格。

删除

< >

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

参数

  • columns (List[str]) — 删除操作的现有列字段的名称列表。

返回

datasets.table.Table

删除列后的新表。

抛出异常

键错误

  • 键错误 — 如果传入的任何列名称不存在。

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

从文件中读取

< >

( filename: str replays = None )

ConcatenationTable

datasets.table.ConcatenationTable

< >

( table: Table blocks: List )

表格通过多个称为“块”的表格的连接得到。它可以在轴0(追加行)和轴1(追加列)上进行连接。

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

  • InMemoryTable对象通过复制内存中的所有数据来序列化。
  • MemoryMappedTable对象在不将数据复制到内存的情况下序列化。取而代之的是,仅序列化到内存映射arrow文件的路径,以及当表从磁盘重新加载时对“replays”进行转换的列表。

其实现在需单独存储每个块。blocks属性存储了一个块列表的列表。第一个轴沿着轴0连接表(它追加行),而第二个轴沿着轴1连接表(它追加列)。

如果在轴0连接时某些列丢失,它们将用null值填充。这是通过使用pyarrow.concat_tables(tables, promote=True)完成的。

您可以通过访问ConcatenationTable.table属性来获取完全组合的表格,并通过访问ConcatenationTable.blocks属性来获取块。

validate

< >

( *args **kwargs )

参数

  • 完整 (布尔值,默认为 False) — 如果为 True,则运行昂贵的检查,否则只运行便宜的检查。

抛出异常

pa.lib.ArrowInvalid

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

执行验证检查。如果验证失败,将抛出异常。

默认情况下只运行便宜验证检查。通过full=True参数进行彻底的验证检查(可能为O(n))。

equals

< >

( *args **kwargs ) bool

参数

  • 其他 (Table) — 待比较的表格。
  • check_metadata bool, 默认为False) - 是否还应检查模式元数据的相等性。

返回

bool

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

to_batches

< >

( *args **kwargs )

参数

  • max_chunksize (int, 默认为None) - RecordBatch分块的最大大小。由于各列的分块布局不同,单个分块可能更小。

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

to_pydict

< >

( *args **kwargs ) dict

返回

dict

将表格转换为dictOrderedDict

to_pandas

< >

( *args **kwargs ) pandas.Series

参数

  • memory_pool (MemoryPool, 默认为 None) —— 用于分配的 Arrow MemoryPool。未传递时使用默认内存池。
  • strings_to_categorical (bool, 默认为 False) —— 将字符串(UTF8)和二进制类型编码为 pandas.Categorical
  • categories (list,默认值 empty) — 应作为 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_metadata 时覆盖默认的 Pandas 类型。该函数接收一个 pyarrow DataType 并期望返回一个 Pandas ExtensionDtypeNone,如果应使用默认转换来处理该类型。如果您有一个字典映射,可以传递 dict.get 作为函数。

返回

pd.Seriespd.DataFrame

pd.Seriespd.DataFrame,具体取决于对象类型

转换为与 pandas 兼容的 NumPy 数组或 DataFrame,视情况而定。

to_string

< >

( *args **kwargs )

字段

< >

( *args **kwargs )

参数

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

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

< >

( *args **kwargs )

参数

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

通过列名或数值索引选择列。

itercolumns

< >

( *args **kwargs )

迭代所有列,按它们的数值顺序。

schema

< >

( )

表及其列的架构。

columns

< >

( )

按顺序列出所有列。

num_columns

< >

( )

此表中列的数量。

num_rows

< >

( )

此表中的行数。

由于表的定义,所有列都有相同数量的行。

shape

< >

( ) (int, int)

返回

(int, int)

行数和列数。

表尺寸:(行数, 列数)。

nbytes

< >

( )

表元素所占用的总字节数。

列名

< >

( )

表的列名。

切片

< >

( 偏移量 = 0 长度 = None )

参数

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

计算此表的零拷贝切片。

filter

< >

( 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 )

参数

  • 目标模式 (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

添加列后生成的新表格。

在指定位置向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

不包含该列的新表格.

创建一个不包含指定列的新 Table.

设置列

< >

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

参数

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

返回

datasets.table.Table

设置传递的列后的新表。

在Table中的位置替换列。

rename_columns

< >

( names *args **kwargs )

创建带有重新命名字段的新表。

选择

< >

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

参数

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

返回

datasets.table.Table

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

选择表格的列。

返回具有指定列和保留元数据的新表格。

删除

< >

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

参数

  • (字符串列表) — 引用现有列的字段名列表。

返回

datasets.table.Table

删除列后的新表。

抛出异常

键错误

  • 键错误 — 如果传入的任何列名称不存在。

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

from_blocks

< >

( blocks : TableBlockContainer )

from_tables

< >

( tables : 列表 axis: int = 0 )

参数

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

从表列表创建 ConcatenationTable

工具

datasets.table.concat_tables

< >

( tables: 列表 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上更新