重新排序紧凑#

紧凑

枚举

enum class duplicate_keep_option#

drop_duplicates API 中用于保留重复行的选项。

枚举器 KEEP_ANY#

保留任意出现。

枚举器 KEEP_FIRST#

保留第一次出现。

枚举器 KEEP_LAST#

保留最后一次出现。

枚举器 KEEP_NONE#

不保留(移除所有)重复出现。

函数

std::unique_ptr<table> drop_nulls(table_view const &input, std::vector<size_type> const &keys, cudf::size_type keep_threshold, rmm::cuda_stream_view stream = cudf::get_default_stream(), rmm::device_async_resource_ref mr = cudf::get_current_device_resource_ref())#

按阈值计数过滤表以移除空值元素。

过滤 input 表的行,根据 keys 中指定的列进行有效性/空值过滤。

给定一个 input table_view,如果 input 列中的第 i 行在其 keys 列中至少有 keep_threshold 个非空字段,则将其复制到输出。

此操作是稳定的:输入顺序在输出中得到保留。

input 中的任何不可空列都被视为全非空。

input   {col1: {1, 2,    3,    null},
         col2: {4, 5,    null, null},
         col3: {7, null, null, null}}
keys = {0, 1, 2} // All columns
keep_threshold = 2

output {col1: {1, 2}
        col2: {4, 5}
        col3: {7, null}}

注意

如果 input.num_rows() 为零,或者 keys 为空或没有空值,则不会出错,并返回一个空的 table

参数:
  • input[in] 要过滤的 input table_view

  • keys[in] 表示 input 中关键列的索引向量

  • keep_threshold[in] 保留一行所需的行中非空字段的最小数量。

  • stream[in] 用于设备内存操作和核函数启动的 CUDA 流

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

返回:

包含 inputkeys 列中至少有 keep_threshold 个非空字段的所有行的表。

std::unique_ptr<table> drop_nulls(table_view const &input, std::vector<size_type> const &keys, rmm::cuda_stream_view stream = cudf::get_default_stream(), rmm::device_async_resource_ref mr = cudf::get_current_device_resource_ref())#

过滤表以移除空值元素。

过滤 input 表的行,根据 keys 中指定的列进行有效性/空值过滤。

input   {col1: {1, 2,    3,    null},
         col2: {4, 5,    null, null},
         col3: {7, null, null, null}}
keys = {0, 1, 2} //All columns

output {col1: {1}
        col2: {4}
        col3: {7}}

与 drop_nulls 相同,但 keep_threshold 默认设置为 keys 中的列数。

参数:
  • input[in] 要过滤的 input table_view

  • keys[in] 表示 input 中关键列的索引向量

  • stream[in] 用于设备内存操作和核函数启动的 CUDA 流

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

返回:

包含 inputkeys 列中没有空值的所有行的表。

std::unique_ptr<table> drop_nans(table_view const &input, std::vector<size_type> const &keys, cudf::size_type keep_threshold, rmm::cuda_stream_view stream = cudf::get_default_stream(), rmm::device_async_resource_ref mr = cudf::get_current_device_resource_ref())#

按阈值计数过滤表以移除 NAN。

过滤 input 表的行,根据 keys 中指定的列进行 NAN 过滤。这些关键列必须是浮点类型。

给定一个 input table_view,如果 input 列中的第 i 行在其 keys 列中至少有 keep_threshold 个非 NAN 元素,则将其复制到输出。

此操作是稳定的:输入顺序在输出中得到保留。

input   {col1: {1.0, 2.0, 3.0, NAN},
         col2: {4.0, null, NAN, NAN},
         col3: {7.0, NAN, NAN, NAN}}
keys = {0, 1, 2} // All columns
keep_threshold = 2

output {col1: {1.0, 2.0}
        col2: {4.0, null}
        col3: {7.0, NAN}}

注意

如果 input.num_rows() 为零,或者 keys 为空,则不会出错,并返回一个空 table

抛出异常:

cudf::logic_error – 如果 keys 列不是浮点类型。

参数:
  • input[in] 要过滤的 input table_view

  • keys[in] 表示 input 中关键列的索引向量

  • keep_threshold[in] 保留一行所需的行中非 NAN 元素的最小数量。

  • stream[in] 用于设备内存操作和核函数启动的 CUDA 流

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

返回:

包含 inputkeys 列中至少有 keep_threshold 个非 NAN 元素的所有行的表。

std::unique_ptr<table> drop_nans(table_view const &input, std::vector<size_type> const &keys, rmm::cuda_stream_view stream = cudf::get_default_stream(), rmm::device_async_resource_ref mr = cudf::get_current_device_resource_ref())#

过滤表以移除 NAN。

过滤 input 表的行,根据 keys 中指定的列进行 NAN 过滤。这些关键列必须是浮点类型。

input   {col1: {1.0, 2.0, 3.0, NAN},
         col2: {4.0, null, NAN, NAN},
         col3: {null, NAN, NAN, NAN}}
keys = {0, 1, 2} // All columns
keep_threshold = 2

output {col1: {1.0}
        col2: {4.0}
        col3: {null}}

与 drop_nans 相同,但 keep_threshold 默认设置为 keys 中的列数。

参数:
  • input[in] 要过滤的 input table_view

  • keys[in] 表示 input 中关键列的索引向量

  • stream[in] 用于设备内存操作和核函数启动的 CUDA 流

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

返回:

包含 inputkeys 列中没有 NAN 的所有行的表。

std::unique_ptr<table> apply_boolean_mask(table_view const &input, column_view const &boolean_mask, rmm::cuda_stream_view stream = cudf::get_default_stream(), rmm::device_async_resource_ref mr = cudf::get_current_device_resource_ref())#

使用布尔值的 boolean_mask 作为掩码过滤 input

给定一个 input table_view 和一个掩码 column_view,如果掩码中对应的第 i 个元素非空且为 true,则将 input 的每个 column_view 中的第 i 个元素复制到相应的输出列。此操作是稳定的:输入顺序得到保留。

注意

如果 input.num_rows() 为零,则不会出错,并返回一个空表。

抛出异常:
参数:
  • input[in] 要过滤的 input table_view

  • boolean_mask[in] 一个类型为 type_id::BOOL8 的可空 column_view,用作过滤 input 的掩码。

  • stream[in] 用于设备内存操作和核函数启动的 CUDA 流

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

返回:

包含通过 boolean_mask 定义的过滤器的所有 input 行副本的表。

std::unique_ptr<table> unique(table_view const &input, std::vector<size_type> const &keys, duplicate_keep_option keep, null_equality nulls_equal = null_equality::EQUAL, rmm::cuda_stream_view stream = cudf::get_default_stream(), rmm::device_async_resource_ref mr = cudf::get_current_device_resource_ref())#

创建一个移除连续重复行的新表。

给定一个 input table_view,将每行复制到输出表以创建一组不同的行。如果存在重复行,复制哪一行取决于 keep 参数。

输出表中的行顺序与输入中相同。

如果表中没有等效的行,则该行是不同的。如果不存在相邻的等效行,则该行是唯一的。也就是说,保留不同的行会移除表/列中的所有重复项,而保留唯一的行仅移除连续分组中的重复项。

性能提示:如果输入已预排序,cudf::unique 可以产生等效的结果(即,相同的输出行集),但运行时间少于 cudf::distinct

抛出异常:

cudf::logic_error – 如果 input 表中的 keys 列索引超出范围。

参数:
  • input[in] 仅复制唯一行的 input table_view

  • keys[in] 表示 input 中关键列的索引向量

  • keep[in] 保留找到的重复项中的任意、第一个、最后一个或不保留

  • nulls_equal[in] 标记空值是否相等,如果 null_equality::EQUAL,则空值相等,如果 null_equality::UNEQUAL,则空值不等。

  • stream[in] 用于设备内存操作和核函数启动的 CUDA 流

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

返回:

包含根据 keep 指定的每组等效行中的唯一行的表

std::unique_ptr<table> distinct(table_view const &input, std::vector<size_type> const &keys, duplicate_keep_option keep = duplicate_keep_option::KEEP_ANY, null_equality nulls_equal = null_equality::EQUAL, nan_equality nans_equal = nan_equality::ALL_EQUAL, rmm::cuda_stream_view stream = cudf::get_default_stream(), rmm::device_async_resource_ref mr = cudf::get_current_device_resource_ref())#

创建一个不含重复行的新表。

给定一个 input table_view,将每行复制到输出表以创建一组不同的行。如果存在重复行,复制哪一行取决于 keep 参数。

输出表中的行顺序未指定。

性能提示:如果输入已预排序,cudf::unique 可以产生等效的结果(即,相同的输出行集),但运行时间少于 cudf::distinct

参数:
  • input – 输入表

  • keys – 表示 input 表中关键列的索引向量

  • keep – 复制找到的重复项中的任意、第一个、最后一个或不复制

  • nulls_equal – 标记空值元素是否应被视为相等

  • nans_equal – 标记 NaN 元素是否应被视为相等

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

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

返回:

包含不同行且顺序未指定的表

std::unique_ptr<column> distinct_indices(table_view const &input, duplicate_keep_option keep = duplicate_keep_option::KEEP_ANY, null_equality nulls_equal = null_equality::EQUAL, nan_equality nans_equal = nan_equality::ALL_EQUAL, rmm::cuda_stream_view stream = cudf::get_default_stream(), rmm::device_async_resource_ref mr = cudf::get_current_device_resource_ref())#

创建一个包含 input 表中所有不同行索引的列。

给定一个 input table_view,生成一个包含所有不同行索引的输出向量。如果存在重复行,保留哪个索引取决于 keep 参数。

参数:
  • input – 输入表

  • keep – 获取找到的重复项中的任意、第一个、最后一个或不获取的索引

  • nulls_equal – 标记空值元素是否应被视为相等

  • nans_equal – 标记 NaN 元素是否应被视为相等

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

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

返回:

包含结果索引的列

std::unique_ptr<table> stable_distinct(table_view const &input, std::vector<size_type> const &keys, duplicate_keep_option keep = duplicate_keep_option::KEEP_ANY, null_equality nulls_equal = null_equality::EQUAL, nan_equality nans_equal = nan_equality::ALL_EQUAL, rmm::cuda_stream_view stream = cudf::get_default_stream(), rmm::device_async_resource_ref mr = cudf::get_current_device_resource_ref())#

创建一个不含重复行且保留输入顺序的新表。

给定一个 input table_view,将每行复制到输出表以创建一组不同的行。输入行顺序得到保留。如果存在重复行,复制哪一行取决于 keep 参数。

此 API 生成与 cudf::distinct 相同的输出行,但保留了输入顺序。

请注意,当 keepKEEP_ANY 时,保留哪个重复行的选择是任意的,但返回的表将保留输入顺序。也就是说,如果关键列包含 1, 2, 1,而另一个值列包含 3, 4, 5,结果可能包含值 3, 44, 5,但不会是 4, 35, 4

参数:
  • input – 输入表

  • keys – 表示 input 表中关键列的索引向量

  • keep – 复制找到的重复项中的任意、第一个、最后一个或不复制

  • nulls_equal – 标记空值元素是否应被视为相等

  • nans_equal – 标记 NaN 元素是否应被视为相等

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

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

返回:

包含不同行且保留输入顺序的表

cudf::size_type unique_count(column_view const &input, null_policy null_handling, nan_policy nan_handling, rmm::cuda_stream_view stream = cudf::get_default_stream())#

计算列中连续等效行组的数量。

如果 null_handlingnull_policy::EXCLUDEnan_handlingnan_policy::NAN_IS_NULL,则 NaNnull 值都会被忽略。如果 null_handlingnull_policy::EXCLUDEnan_handlingnan_policy::NAN_IS_VALID,则仅 null 被忽略,NaN 会计入计数。

null 被视为相等。

参数:
  • input[in] 将计算其连续等效行组数量的 column_view

  • null_handling[in] 计数时包含或忽略 null 的标记

  • nan_handling[in] 标记是否将 NaN==null 视为相等

  • stream[in] 用于设备内存操作和核函数启动的 CUDA 流

返回:

列中连续等效行组的数量

cudf::size_type unique_count(table_view const &input, null_equality nulls_equal = null_equality::EQUAL, rmm::cuda_stream_view stream = cudf::get_default_stream())#

计算表中连续等效行组的数量。

参数:
  • input[in] 将计算其连续等效行组数量的表

  • nulls_equal[in] 标记 null 元素是否应被视为相等;如果 null_equality::UNEQUAL,则 null 不相等。

  • stream[in] 用于设备内存操作和核函数启动的 CUDA 流

返回:

列中连续等效行组的数量

cudf::size_type distinct_count(column_view const &input, null_policy null_handling, nan_policy nan_handling, rmm::cuda_stream_view stream = cudf::get_default_stream())#

计算 column_view 中的不同元素数量。

如果 nulls_equal == nulls_equal::UNEQUAL,则所有 null 都不同。

给定一个 input column_view,返回此 column_view 中不同元素的数量。

如果 null_handlingnull_policy::EXCLUDEnan_handlingnan_policy::NAN_IS_NULL,则 NaNnull 值都会被忽略。如果 null_handlingnull_policy::EXCLUDEnan_handlingnan_policy::NAN_IS_VALID,则仅 null 被忽略,NaN 会计入不同元素的数量。

null 被视为相等。

参数:
  • input[in] 将计算其不同元素数量的 column_view

  • null_handling[in] 计数时包含或忽略 null 的标记

  • nan_handling[in] 标记是否将 NaN==null 视为相等

  • stream[in] 用于设备内存操作和核函数启动的 CUDA 流

返回:

表中不同行的数量

cudf::size_type distinct_count(table_view const &input, null_equality nulls_equal = null_equality::EQUAL, rmm::cuda_stream_view stream = cudf::get_default_stream())#

计算表中的非重复行数。

参数:
  • input[in] 将计算非重复行数的表

  • nulls_equal[in] 标志,表示是否应将 null 元素视为相等。如果为 null_equality::UNEQUAL,则 null 不相等。

  • stream[in] 用于设备内存操作和核函数启动的 CUDA 流

返回:

表中不同行的数量