转换填充#

填充

函数

void fill_in_place(mutable_column_view &destination, size_type begin, size_type end, scalar const &value, rmm::cuda_stream_view stream = cudf::get_default_stream())#

用标量值就地填充列中的一个范围的元素。

填充从 begin 开始的 destination 的 N 个元素,使用 value,其中 N = (end - begin)。

使用 value 覆盖 destination 中由索引 [begin, end) 指示的元素范围。对于需要重新分配内存的使用场景,请使用返回 std::unique_ptr<column> 的非就地填充函数。

抛出:
  • cudf::logic_error – 如果需要重新分配内存(例如对于变宽类型)。

  • cudf::logic_error – 如果范围无效(如果 begin < 0, begin > end, 或 end > destination.size())。

  • cudf::logic_error – 如果 destinationvalue 类型不同。

  • cudf::logic_error – 如果 value 无效但 destination 不可为空。

参数:
  • destination – 要填充的预分配列

  • begin – 填充范围的起始索引(包含)

  • end – 填充范围中最后一个元素的索引(不包含)

  • value – 要填充的标量值

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

std::unique_ptr<column> fill(column_view const &input, size_type begin, size_type end, scalar const &value, rmm::cuda_stream_view stream = cudf::get_default_stream(), rmm::device_async_resource_ref mr = cudf::get_current_device_resource_ref())#

用标量值非就地填充列中的一个范围的元素。

创建一个新列,就像对 input 执行了就地填充一样;也就是说,先创建了 input 的一个副本,然后由索引 [begin, end) 指示的元素被 value 覆盖。

抛出:
  • cudf::logic_error – 如果范围无效(如果 begin < 0, begin > end, 或 end > destination.size())。

  • cudf::logic_error – 如果 destinationvalue 类型不同。

参数:
  • input – 用于创建新列的输入列。新列是通过用 value 替换指定范围内的 input 的值来创建的。

  • begin – 填充范围的起始索引(包含)

  • end – 填充范围中最后一个元素的索引(不包含)

  • value – 要填充的标量值

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

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

返回:

结果输出列

std::unique_ptr<table> repeat(table_view const &input_table, column_view const &count, rmm::cuda_stream_view stream = cudf::get_default_stream(), rmm::device_async_resource_ref mr = cudf::get_current_device_resource_ref())#

重复 Table 的行。

通过重复 input_table 的行来创建一个新表。每个元素的重复次数由 count 相应索引处的值定义。示例

in = [4,5,6]
count = [1,2,3]
return = [4,5,5,6,6,6]
count 不应包含空值;不应包含负值;且计数元素的总和不应超过 size_type 的限制。如果 count 包含负值或总和溢出,则此函数的行为是未定义的。

抛出:
参数:
  • input_table – 输入表

  • count – 不可为空的整数类型列

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

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

返回:

包含重复行的结果表

std::unique_ptr<table> repeat(table_view const &input_table, size_type count, rmm::cuda_stream_view stream = cudf::get_default_stream(), rmm::device_async_resource_ref mr = cudf::get_current_device_resource_ref())#

重复 Table 的行。

通过将 input_table 的行重复 count 次来创建一个新表。示例

in = [4,5,6]
count = 2
return = [4,4,5,5,6,6]

抛出:
  • cudf::logic_error – 如果 count 是负数。

  • std::overflow_error – 如果 input_table.num_rows() * count 超过 size_type 的限制。

参数:
  • input_table – 输入表

  • count – 重复次数

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

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

返回:

包含重复行的结果表

std::unique_ptr<column> sequence(size_type size, scalar const &init, scalar const &step, rmm::cuda_stream_view stream = cudf::get_default_stream(), rmm::device_async_resource_ref mr = cudf::get_current_device_resource_ref())#

使用由初始值和步长指定的值序列填充列。

创建一个新列并填充 size 个值,从 init 开始,每次增加 step,生成序列 [ init, init+step, init+2*step, … init + (size - 1)*step]

size = 3
init = 0
step = 2
return = [0, 2, 4]

抛出:
参数:
  • size – 输出列的大小

  • init – 序列中的第一个值

  • step – 增量值

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

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

返回:

包含生成的序列的结果列

std::unique_ptr<column> sequence(size_type size, scalar const &init, rmm::cuda_stream_view stream = cudf::get_default_stream(), rmm::device_async_resource_ref mr = cudf::get_current_device_resource_ref())#

使用由初始值和步长为 1 指定的值序列填充列。

创建一个新列并填充 size 个值,从 init 开始,每次增加 1,生成序列 [ init, init+1, init+2, … init + (size - 1)]

size = 3
init = 0
return = [0, 1, 2]

抛出:
参数:
  • size – 输出列的大小

  • init – 序列中的第一个值

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

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

返回:

包含生成的序列的结果列

std::unique_ptr<cudf::column> calendrical_month_sequence(size_type size, scalar const &init, size_type months, rmm::cuda_stream_view stream = cudf::get_default_stream(), rmm::device_async_resource_ref mr = cudf::get_current_device_resource_ref())#

生成时间戳序列,从 init 开始,每个后续元素增加 months,即对于 i[0, size) 范围内,为 output[i] = init + i * months

如果给定日期无效,日期将回退到该月的最后一个有效日期。

示例

size = 3
init = 2020-01-31 08:00:00
months = 1
return = [2020-01-31 08:00:00, 2020-02-29 08:00:00, 2020-03-31 08:00:00]

抛出:

cudf::logic_error – 如果输入数据类型不是 TIMESTAMP

参数:
  • size – 要生成的时间戳数量

  • init – 初始时间戳

  • months – 增加的月数

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

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

返回:

包含月份序列的时间戳列