列表提取#

group lists_extract

函数

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

Parameters:
  • lists_column – 从中提取元素的列。

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

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

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

Returns:

提取元素的列。

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

Parameters:
  • lists_column – 从中提取元素的列。

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

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

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

Throws:

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

Returns:

提取元素的列。