列排序#

group column_sort

枚举

enum class rank_method : int32_t#

用于对列进行排名的决胜方法。

另请参阅

cudf::make_rank_aggregation 了解更多详情。

值:

enumerator FIRST#

稳定的排序顺序排名(无并列)

enumerator AVERAGE#

组内第一个的平均值

enumerator MIN#

组内第一个的最小值

enumerator MAX#

组中的第一个最大值

enumerator DENSE#

rank 在组之间总是增加 1

函数

std::unique_ptr<column> sorted_order(table_view const &input, std::vector<order> const &column_order = {}, std::vector<null_order> const &null_precedence = {}, rmm::cuda_stream_view stream = cudf::get_default_stream(), rmm::device_async_resource_ref mr = cudf::get_current_device_resource_ref())#

计算将产生按字典顺序排序的input的行索引。

Parameters:
  • input – 要排序的表

  • column_order – 每列所需的排序顺序。大小必须等于 input.num_columns() 或为空。如果为空,所有列将按升序排序。

  • null_precedence – 每列中空值与其他元素相比的期望顺序。大小必须等于 input.num_columns() 或为空。如果为空,所有列将按照 null_order::BEFORE 排序。

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

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

Returns:

一个非空列,包含如果input被排序后的置换行索引

std::unique_ptr<column> stable_sorted_order(table_view const &input, std::vector<order> const &column_order = {}, std::vector<null_order> const &null_precedence = {}, rmm::cuda_stream_view stream = cudf::get_default_stream(), rmm::device_async_resource_ref mr = cudf::get_current_device_resource_ref())#

计算在稳定的字典排序顺序中生成input的行索引。

等价元素的顺序保证会被保留。

计算将产生按字典顺序排序的input的行索引。

Parameters:
  • input – 要排序的表

  • column_order – 每列所需的排序顺序。大小必须等于 input.num_columns() 或为空。如果为空,所有列将按升序排序。

  • null_precedence – 每列中空值与其他元素的期望排序顺序。大小必须等于 input.num_columns() 或为空。如果为空,所有列将按照 null_order::BEFORE 进行排序。

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

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

Returns:

一个非空列,包含如果input被排序后的置换行索引

bool is_sorted(cudf::table_view const &table, std::vector<order> const &column_order, std::vector<null_order> const &null_precedence, rmm::cuda_stream_view stream = cudf::get_default_stream())#

检查table的行是否按字典顺序排序。

Parameters:
  • table – 需要比较行以进行排序的表

  • column_order – 每列的预期排序顺序。大小必须等于 in.num_columns() 或为空。如果为空,则预期所有列均为升序排列。

  • null_precedence – 每列中空值与其他元素相比的期望顺序。大小必须等于 input.num_columns() 或为空。如果为空,则假定所有列使用 null_order::BEFORE

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

Returns:

如果按预期排序则为true,否则为false

std::unique_ptr<table> sort(table_view const &input, std::vector<order> const &column_order = {}, std::vector<null_order> const &null_precedence = {}, rmm::cuda_stream_view stream = cudf::get_default_stream(), rmm::device_async_resource_ref mr = cudf::get_current_device_resource_ref())#

对表的行执行字典排序。

Parameters:
  • input – 要排序的表

  • column_order – 每列所需的顺序。大小必须等于 input.num_columns() 或为空。如果为空,所有列将按升序排序。

  • null_precedence – 对于input中的每一列,空元素与其他元素的期望排序顺序。大小必须等于input.num_columns()或为空。如果为空,所有列将使用null_order::BEFORE进行排序。

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

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

Returns:

包含所需排序顺序的新表 input

std::unique_ptr<table> stable_sort(table_view const &input, std::vector<order> const &column_order = {}, std::vector<null_order> const &null_precedence = {}, rmm::cuda_stream_view stream = cudf::get_default_stream(), rmm::device_async_resource_ref mr = cudf::get_current_device_resource_ref())#

对表的行执行稳定的字典排序。

对表的行执行字典排序。

Parameters:
  • input – 要排序的表

  • column_order – 每列所需的顺序。大小必须等于 input.num_columns() 或为空。如果为空,所有列将按升序排序。

  • null_precedence – 对于input中的每一列,空元素与其他元素的期望排序顺序。大小必须等于input.num_columns()或为空。如果为空,所有列将使用null_order::BEFORE进行排序。

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

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

Returns:

包含所需排序顺序的新表 input

std::unique_ptr<table> sort_by_key(table_view const &values, table_view const &keys, std::vector<order> const &column_order = {}, std::vector<null_order> const &null_precedence = {}, rmm::cuda_stream_view stream = cudf::get_default_stream(), rmm::device_async_resource_ref mr = cudf::get_current_device_resource_ref())#

执行键值排序。

创建一个新表,根据keys行的字典顺序重新排列values的行。

Throws:

cudf::logic_error – 如果 values.num_rows() != keys.num_rows().

Parameters:
  • values – 要重新排序的表格

  • keys – 确定排序顺序的表

  • column_orderkeys 中每列所需的顺序。大小必须等于 keys.num_columns() 或为空。如果为空,所有列将按升序排序。

  • null_precedence – 对于keys中的每一列,空元素与其他元素的期望排序顺序。大小必须等于keys.num_columns()或为空。如果为空,所有列将使用null_order::BEFORE进行排序。

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

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

Returns:

keys行的字典顺序决定的values的重新排序。

std::unique_ptr<table> stable_sort_by_key(table_view const &values, table_view const &keys, std::vector<order> const &column_order = {}, std::vector<null_order> const &null_precedence = {}, rmm::cuda_stream_view stream = cudf::get_default_stream(), rmm::device_async_resource_ref mr = cudf::get_current_device_resource_ref())#

执行键值稳定排序。

执行键值排序。创建一个新表,根据keys行的字典顺序重新排列values的行。

Throws:

cudf::logic_error – 如果 values.num_rows() != keys.num_rows().

Parameters:
  • values – 要重新排序的表格

  • keys – 确定排序顺序的表

  • column_orderkeys 中每列所需的顺序。大小必须等于 keys.num_columns() 或为空。如果为空,所有列将按升序排序。

  • null_precedence – 对于keys中的每一列,空元素与其他元素的期望排序顺序。大小必须等于keys.num_columns()或为空。如果为空,所有列将按照null_order::BEFORE进行排序。

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

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

Returns:

keys行的字典顺序决定的values的重新排序。

std::unique_ptr<column> rank(column_view const &input, rank_method method, order column_order, null_policy null_handling, null_order null_precedence, bool percentage, rmm::cuda_stream_view stream = cudf::get_default_stream(), rmm::device_async_resource_ref mr = cudf::get_current_device_resource_ref())#

计算输入列在排序顺序中的排名。

排名表示每个元素在排序列中的位置,排名值从1开始。

input = { 3, 4, 5, 4, 1, 2}
Result for different rank_method are
FIRST    = {3, 4, 6, 5, 1, 2}
AVERAGE  = {3, 4.5, 6, 4.5, 1, 2}
MIN      = {3, 4, 6, 4, 1, 2}
MAX      = {3, 5, 6, 5, 1, 2}
DENSE    = {3, 4, 5, 4, 1, 2}
Parameters:
  • input – 要排名的列

  • method – 用于打破平局(相同值)的排名方法

  • column_order – 排名的期望排序顺序

  • null_handling – 在排名过程中包含空值的标志。如果不包含空值,相应的排名将为null。

  • null_precedence – 列中空值与其他元素相比的期望顺序

  • percentage – 将排名转换为范围在 (0,1] 的百分比的标志

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

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

Returns:

一个包含input列中每个元素排名的列。默认情况下,输出列类型将为size_type列,否则当method=rank_method::AVERAGEpercentage=True时,输出列类型将为double

std::unique_ptr<column> segmented_sorted_order(table_view const &keys, column_view const &segment_offsets, std::vector<order> const &column_order = {}, std::vector<null_order> const &null_precedence = {}, rmm::cuda_stream_view stream = cudf::get_default_stream(), rmm::device_async_resource_ref mr = cudf::get_current_device_resource_ref())#

返回表中每个段排序后的排序顺序。

如果segment_offsets包含的值大于行数,则行为未定义。

Example:
keys = { {9, 8, 7, 6, 5, 4, 3, 2, 1, 0} }
offsets = {0, 3, 7, 10}
result = cudf::segmented_sorted_order(keys, offsets);
result is { 2,1,0, 6,5,4,3, 9,8,7 }

如果segment_offsets为空或只包含一个索引,则不会对值进行排序,结果是从0到keys.size()-1的整数序列。

segment_offsets 不需要包含所有索引。指定段之外的任何索引将不会被排序。

Example: (offsets do not cover all indices)
keys = { {9, 8, 7, 6, 5, 4, 3, 2, 1, 0} }
offsets = {3, 7}
result = cudf::segmented_sorted_order(keys, offsets);
result is { 0,1,2, 6,5,4,3, 7,8,9 }
Throws:

cudf::logic_error – 如果 segment_offsets 不是 size_type 列。

Parameters:
  • keys – 确定每个段中元素顺序的表

  • segment_offsets – 包含每个连续段的起始偏移索引的size_type类型的列。

  • column_orderkeys 中每列所需的顺序。大小必须等于 keys.num_columns() 或为空。如果为空,所有列将按升序排序。

  • null_precedence – 对于keys中的每一列,空元素与其他元素的期望排序顺序。大小必须等于keys.num_columns()或为空。如果为空,所有列将按照null_order::BEFORE进行排序。

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

  • mr – 用于分配任何返回对象的设备内存资源

Returns:

段排序表的排序顺序

std::unique_ptr<column> stable_segmented_sorted_order(table_view const &keys, column_view const &segment_offsets, std::vector<order> const &column_order = {}, std::vector<null_order> const &null_precedence = {}, rmm::cuda_stream_view stream = cudf::get_default_stream(), rmm::device_async_resource_ref mr = cudf::get_current_device_resource_ref())#

返回在表中稳定排序每个段后的排序顺序。

返回表中每个段排序后的排序顺序。如果segment_offsets包含的值大于行数,则行为未定义。

Example:
keys = { {9, 8, 7, 6, 5, 4, 3, 2, 1, 0} }
offsets = {0, 3, 7, 10}
result = cudf::segmented_sorted_order(keys, offsets);
result is { 2,1,0, 6,5,4,3, 9,8,7 }

如果segment_offsets为空或只包含一个索引,则不会对值进行排序,结果是从0到keys.size()-1的整数序列。

segment_offsets 不需要包含所有索引。指定段之外的任何索引将不会被排序。

Example: (offsets do not cover all indices)
keys = { {9, 8, 7, 6, 5, 4, 3, 2, 1, 0} }
offsets = {3, 7}
result = cudf::segmented_sorted_order(keys, offsets);
result is { 0,1,2, 6,5,4,3, 7,8,9 }
Throws:

cudf::logic_error – 如果 segment_offsets 不是 size_type 列。

Parameters:
  • keys – 确定每个段中元素顺序的表

  • segment_offsets – 包含每个连续段的起始偏移索引的size_type类型的列。

  • column_orderkeys 中每列所需的顺序。大小必须等于 keys.num_columns() 或为空。如果为空,所有列将按升序排序。

  • null_precedence – 对于keys中的每一列,空元素与其他元素的期望排序顺序。大小必须等于keys.num_columns()或为空。如果为空,所有列将按照null_order::BEFORE进行排序。

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

  • mr – 用于分配任何返回对象的设备内存资源

Returns:

段排序表的排序顺序

std::unique_ptr<table> segmented_sort_by_key(table_view const &values, table_view const &keys, column_view const &segment_offsets, std::vector<order> const &column_order = {}, std::vector<null_order> const &null_precedence = {}, rmm::cuda_stream_view stream = cudf::get_default_stream(), rmm::device_async_resource_ref mr = cudf::get_current_device_resource_ref())#

对表格执行字典顺序的分段排序。

如果segment_offsets包含的值大于行数,则行为未定义。

Example:
keys = { {9, 8, 7, 6, 5, 4, 3, 2, 1, 0} }
values = { {'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j'} }
offsets = {0, 3, 7, 10}
result = cudf::segmented_sort_by_key(keys, values, offsets);
result is { 'c','b','a', 'g','f','e','d', 'j','i','h' }

如果segment_offsets为空或只包含一个索引,则不会对值进行排序,结果是值的副本。

segment_offsets 不需要包含所有索引。指定段之外的任何索引将不会被排序。

Example: (offsets do not cover all indices)
keys = { {9, 8, 7, 6, 5, 4, 3, 2, 1, 0} }
values = { {'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j'} }
offsets = {3, 7}
result = cudf::segmented_sort_by_key(keys, values, offsets);
result is { 'a','b','c', 'g','f','e','d', 'h','i','j' }
Throws:
Parameters:
  • values – 要重新排序的表格

  • keys – 确定每个段中元素顺序的表

  • segment_offsets – 包含每个连续段的起始偏移索引的size_type类型的列。

  • column_orderkeys 中每列所需的顺序。大小必须等于 keys.num_columns() 或为空。如果为空,所有列将按升序排序。

  • null_precedence – 对于keys中的每一列,空元素与其他元素的期望排序顺序。大小必须等于keys.num_columns()或为空。如果为空,所有列将按照null_order::BEFORE进行排序。

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

  • mr – 用于分配任何返回对象的设备内存资源

Returns:

每个段中的元素已排序的表格

std::unique_ptr<table> stable_segmented_sort_by_key(table_view const &values, table_view const &keys, column_view const &segment_offsets, std::vector<order> const &column_order = {}, std::vector<null_order> const &null_precedence = {}, rmm::cuda_stream_view stream = cudf::get_default_stream(), rmm::device_async_resource_ref mr = cudf::get_current_device_resource_ref())#

对表格执行稳定的字典序分段排序。

对表执行字典顺序分段排序。如果segment_offsets包含的值大于行数,则行为未定义。

Example:
keys = { {9, 8, 7, 6, 5, 4, 3, 2, 1, 0} }
values = { {'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j'} }
offsets = {0, 3, 7, 10}
result = cudf::segmented_sort_by_key(keys, values, offsets);
result is { 'c','b','a', 'g','f','e','d', 'j','i','h' }

如果segment_offsets为空或只包含一个索引,则不会对值进行排序,结果是值的副本。

segment_offsets 不需要包含所有索引。指定段之外的任何索引将不会被排序。

Example: (offsets do not cover all indices)
keys = { {9, 8, 7, 6, 5, 4, 3, 2, 1, 0} }
values = { {'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j'} }
offsets = {3, 7}
result = cudf::segmented_sort_by_key(keys, values, offsets);
result is { 'a','b','c', 'g','f','e','d', 'h','i','j' }
Throws:
Parameters:
  • values – 要重新排序的表格

  • keys – 确定每个段中元素顺序的表

  • segment_offsets – 包含每个连续段的起始偏移索引的size_type类型的列。

  • column_orderkeys 中每列所需的顺序。大小必须等于 keys.num_columns() 或为空。如果为空,所有列将按升序排序。

  • null_precedence – 对于keys中的每一列,空元素与其他元素的期望排序顺序。大小必须等于keys.num_columns()或为空。如果为空,所有列将按照null_order::BEFORE进行排序。

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

  • mr – 用于分配任何返回对象的设备内存资源

Returns:

每个分段中的元素已排序的表格