列排序#
- group column_sort
枚举
函数
-
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_order –
keys中每列所需的顺序。大小必须等于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_order –
keys中每列所需的顺序。大小必须等于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::AVERAGE或percentage=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_order –
keys中每列所需的顺序。大小必须等于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_order –
keys中每列所需的顺序。大小必须等于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:
cudf::logic_error – 如果
values.num_rows() != keys.num_rows()。cudf::logic_error – 如果
segment_offsets不是size_type列。
- Parameters:
values – 要重新排序的表格
keys – 确定每个段中元素顺序的表
segment_offsets – 包含每个连续段的起始偏移索引的
size_type类型的列。column_order –
keys中每列所需的顺序。大小必须等于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:
cudf::logic_error – 如果
values.num_rows() != keys.num_rows()。cudf::logic_error – 如果
segment_offsets不是size_type列。
- Parameters:
values – 要重新排序的表格
keys – 确定每个段中元素顺序的表
segment_offsets – 包含每个连续段的起始偏移索引的
size_type类型的列。column_order –
keys中每列所需的顺序。大小必须等于keys.num_columns()或为空。如果为空,所有列将按升序排序。null_precedence – 对于
keys中的每一列,空元素与其他元素的期望排序顺序。大小必须等于keys.num_columns()或为空。如果为空,所有列将按照null_order::BEFORE进行排序。stream – 用于设备内存操作和内核启动的CUDA流
mr – 用于分配任何返回对象的设备内存资源
- Returns:
每个分段中的元素已排序的表格
-
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())#