转换变换#

group transformation_transform

函数

std::unique_ptr<column> transform(column_view const &input, std::string const &unary_udf, data_type output_type, bool is_ptx, rmm::cuda_stream_view stream = cudf::get_default_stream(), rmm::device_async_resource_ref mr = cudf::get_current_device_resource_ref())#

通过对输入列的每个元素应用一元函数来创建一个新列。

计算:out[i] = F(in[i])

输出空掩码与输入空掩码相同,因此如果输入[i]为空,则输出[i]也为空

Parameters:
  • input – 输入列的不可变视图,用于转换

  • unary_udf – 要应用的一元函数的PTX/CUDA字符串

  • output_type – 与UDF中的输出类型兼容的输出类型

  • is_ptx – true: UDF被视为PTX代码;false: UDF被视为CUDA代码

  • stream – 用于设备内存操作和内核启动的CUDA流

  • mr – 用于分配返回列的设备内存的设备内存资源

Returns:

将一元函数应用于输入的每个元素后得到的列

std::pair<std::unique_ptr<rmm::device_buffer>, size_type> nans_to_nulls(column_view const &input, rmm::cuda_stream_view stream = cudf::get_default_stream(), rmm::device_async_resource_ref mr = cudf::get_current_device_resource_ref())#

通过将NaN转换为null并保留现有的null值,从input创建一个null_mask,并返回新的null_count。

Throws:

cudf::logic_error – 如果 input.type() 是非浮点类型

Parameters:
  • input – 输入列的不可变视图,类型为浮点型

  • stream – 用于设备内存操作和内核启动的CUDA流

  • mr – 用于分配返回的位掩码的设备内存资源

Returns:

一对包含一个device_buffer,其中包含新的位掩码及其通过将input中的NaN替换为null获得的空值计数。

std::unique_ptr<column> compute_column(table_view const &table, ast::expression const &expr, rmm::cuda_stream_view stream = cudf::get_default_stream(), rmm::device_async_resource_ref mr = cudf::get_current_device_resource_ref())#

通过在表上评估表达式树来计算新列。

这会在表上评估一个表达式以生成一个新列。也称为n元变换。

Throws:

cudf::logic_error – 如果传递了一个在 table_reference::RIGHT 上操作的表达式。

Parameters:
  • table – 用于表达式评估的表

  • expr – 表达式树的根节点

  • stream – 用于设备内存操作和内核启动的CUDA流

  • mr – 设备内存资源

Returns:

输出列

std::pair<std::unique_ptr<rmm::device_buffer>, cudf::size_type> bools_to_mask(column_view const &input, rmm::cuda_stream_view stream = cudf::get_default_stream(), rmm::device_async_resource_ref mr = cudf::get_current_device_resource_ref())#

从布尔元素列创建位掩码。

如果input中的元素itrue,则结果掩码中的位i被设置为1。否则,如果元素ifalse或null,则位i被取消设置(0)。

Throws:

cudf::logic_error – 如果 input.type() 是非布尔类型

Parameters:
  • input – 要转换为位掩码的布尔元素

  • stream – 用于设备内存操作和内核启动的CUDA流

  • mr – 用于分配返回的位掩码的设备内存资源

Returns:

一对包含一个device_buffer,其中包含新的位掩码及其从输入中获得的空值计数,考虑到true代表valid/1false代表invalid/0

std::pair<std::unique_ptr<cudf::table>, std::unique_ptr<cudf::column>> encode(cudf::table_view const &input, rmm::cuda_stream_view stream = cudf::get_default_stream(), rmm::device_async_resource_ref mr = cudf::get_current_device_resource_ref())#

将给定表的行编码为整数。

编码值是范围在[0, n)内的整数,其中n是输入表中不同行的数量。结果表满足keys[result[i]] == input[i],其中keys是一个包含input中不同行并按升序排序的表。如果有空值,它们会被排序到keys表的末尾。

示例:

input: [{'a', 'b', 'b', 'a'}]
output: [{'a', 'b'}], {0, 1, 1, 0}

input: [{1, 3, 1, 2, 9}, {1, 2, 1, 3, 5}]
output: [{1, 2, 3, 9}, {1, 3, 2, 5}], {0, 2, 0, 1, 3}

Parameters:
  • input – 包含要编码的值的表格

  • stream – 用于设备内存操作和内核启动的CUDA流

  • mr – 用于分配返回表的设备内存的设备内存资源

Returns:

一对包含输入表中不同行的排序顺序,以及一个表示编码行的整数索引列。

std::pair<std::unique_ptr<column>, table_view> one_hot_encode(column_view const &input, column_view const &categories, rmm::cuda_stream_view stream = cudf::get_default_stream(), rmm::device_async_resource_ref mr = cudf::get_current_device_resource_ref())#

通过为categories中的每个值生成一个新列来编码input,表示该值在input中的存在。

生成的每类别列作为单个列返回,通过 table_view 查看。

如果 input[i] == categories[j],则输出表中第 j 列的第 i 行等于 1,否则为 0。

如果 input[i] == categories[j],则输出表中第 j 列的第 i 行等于 1,否则为 0。

示例:

input: [{'a', 'c', null, 'c', 'b'}]
categories: ['c', null]
output: [{0, 1, 0, 1, 0}, {0, 0, 1, 0, 0}]

Throws:

cudf::logic_error – 如果输入和类别类型不同。

Parameters:
  • input – 包含要编码的值的列

  • categories – 包含类别的列

  • stream – 用于设备内存操作和内核启动的CUDA流

  • mr – 用于分配返回表的设备内存的设备内存资源

Returns:

包含所有者到所有编码数据的一对以及数据的表格视图

std::unique_ptr<column> mask_to_bools(bitmask_type const *bitmask, size_type begin_bit, size_type end_bit, rmm::cuda_stream_view stream = cudf::get_default_stream(), rmm::device_async_resource_ref mr = cudf::get_current_device_resource_ref())#

从给定的位掩码创建一个布尔列。

返回[begin_bit, end_bit)中每个位的bool值。如果最低有效位编号中的位i被设置(1),则输出中的元素itrue,否则为false

示例:

input: {0b10101010}
output: [{false, true, false, true, false, true, false, true}]

Throws:
Parameters:
  • bitmask – 一个设备指针,指向需要转换的位掩码

  • begin_bit – 转换应从哪一位开始的位置

  • end_bit – 转换应停止的位之前的位置

  • stream – 用于设备内存操作和内核启动的CUDA流

  • mr – 用于分配返回列的设备内存的设备内存资源

Returns:

一个布尔列,表示从 [begin_bit, end_bit) 的给定掩码

std::unique_ptr<column> row_bit_count(table_view const &t, rmm::cuda_stream_view stream = cudf::get_default_stream(), rmm::device_async_resource_ref mr = cudf::get_current_device_resource_ref())#

返回table_view中每行所有列的近似累计大小(以位为单位)。

此函数计算位数而不是字节数,以考虑每行只有一个位的空掩码。

返回的列中的每一行是表中每列每行大小的总和。

在某些情况下,这是一个不精确的近似值。具体来说,列表和字符串的列需要N+1个偏移量来表示N行。由调用者计算任何一组被考虑行的终止偏移量的少量额外开销。

此函数返回当前列形成时每行的大小。这可能最终会大于通过收集行所得到的数字。具体来说,结构列有效性掩码的下推可能会使包含字符串或列表列数据的行无效。在这些情况下,返回的大小是保守的:

row_bit_count(column(x)) >= row_bit_count(gather(column(x)))

Parameters:
  • t – 执行计算所需的表格视图

  • stream – 用于设备内存操作和内核启动的CUDA流

  • mr – 用于分配返回列的设备内存的设备内存资源

Returns:

一个32位整数列,包含每行的位计数

std::unique_ptr<column> segmented_row_bit_count(table_view const &t, size_type segment_length, rmm::cuda_stream_view stream = cudf::get_default_stream(), rmm::device_async_resource_ref mr = cudf::get_current_device_resource_ref())#

返回table_view中所有列的近似累积大小(以位为单位),针对每一行段。

这与计算输入表中每行的位大小类似,在cudf::row_bit_count中,不同之处在于行大小是按段累积的。

目前,仅支持固定长度的段。如果输入表的行数不能被segment_length整除,则其最后一段被视为比其他段短。

Throws:

std::invalid_argument – 如果输入的 segment_length 是非正数或大于输入表中的行数。

Parameters:
  • t – 执行计算所需的表格视图

  • segment_length – 每个段中的行数,用于计算总大小

  • stream – 用于设备内存操作和内核启动的CUDA流

  • mr – 用于分配返回列的设备内存的设备内存资源

Returns:

一个32位整数列,包含每行段的位计数