列表提取#

提取

函数

std::unique_ptr<column> extract_list_element(lists_column_view const &lists_column, size_type index, rmm::cuda_stream_view stream = cudf::get_default_stream(), rmm::device_async_resource_ref mr = cudf::get_current_device_resource_ref())#

创建一个列,其中每一行是输入 lists_column 中对应子列表中位于 index 位置的元素。

输出 column[i] 的值设置为 lists_column[i][index] 的元素。如果 index 大于 lists_column[i] 处子列表的大小,则输出 column[i] = null

l = { {1, 2, 3}, {4}, {5, 6} }
r = extract_list_element(l, 1)
r is now {2, null, 6}

index 也可以是负数,这种情况下检索到的行是从每个子列表末尾开始偏移的。

l = { {"a"}, {"b", "c"}, {"d", "e", "f"} }
r = extract_list_element(l, -1)
r is now {"a", "c", "f"}

任何 lists_column[i] == null 的输入都将产生输出 column[i] = null。此外,任何 lists_column[i][index] == null 的元素都将产生输出 column[i] = null

参数:
  • lists_column – 要从中提取元素的列。

  • index – 要从每个子列表中检索的行索引。

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

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

返回值:

提取元素的列。

std::unique_ptr<column> extract_list_element(lists_column_view const &lists_column, column_view const &indices, rmm::cuda_stream_view stream = cudf::get_default_stream(), rmm::device_async_resource_ref mr = cudf::get_current_device_resource_ref())#

创建一个列,其中每一行是从输入 lists_column 中对应子列表中使用 indices 列中的索引选择的单个元素。

输出 column[i] 的值设置为 lists_column[i][indices[i]] 的元素。如果 indices[i] 大于 lists_column[i] 处子列表的大小,则输出 column[i] = null。类似地,如果 indices[i]null,则 column[i] = null

l = { {1, 2, 3}, {4}, {5, 6} }
r = extract_list_element(l, {0, null, 2})
r is now {1, null, null}

indices[i] 也可以是负数,这种情况下检索到的行是从每个子列表末尾开始偏移的。

l = { {"a"}, {"b", "c"}, {"d", "e", "f"} }
r = extract_list_element(l, {-1, -2, -4})
r is now {"a", "b", null}

任何 lists_column[i] == null 的输入都会产生输出 column[i] = null。任何 lists_column[i][indices[i]] == null 的输入都会产生输出 column[i] = null

参数:
  • lists_column – 要从中提取元素的列。

  • indices – 其行指示要从每个列表行中检索的元素索引的列。

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

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

抛出异常:

cudf::logic_error – 如果 lists_columnindices 的大小不匹配。

返回值:

提取元素的列。