Reorder Compact#
- group reorder_compact
Enums
-
enum class duplicate_keep_option#
Choices for drop_duplicates API for retainment of duplicate rows.
Values:
-
enumerator KEEP_ANY#
Keep an unspecified occurrence.
-
enumerator KEEP_FIRST#
Keep first occurrence.
-
enumerator KEEP_LAST#
Keep last occurrence.
-
enumerator KEEP_NONE#
Keep no (remove all) occurrences of duplicates.
-
enumerator KEEP_ANY#
Functions
-
std::unique_ptr<table> drop_nulls(table_view const &input, std::vector<size_type> const &keys, cudf::size_type keep_threshold, rmm::mr::device_memory_resource *mr = rmm::mr::get_current_device_resource())#
Filters a table to remove null elements with threshold count.
Filters the rows of the
input
considering specified columns indicated inkeys
for validity / null values.Given an input table_view, row
i
from the input columns is copied to the output if the same rowi
ofkeys
has at leastkeep_threshold
non-null fields.This operation is stable: the input order is preserved in the output.
Any non-nullable column in the input is treated as all non-null.
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}}
Note
if
input.num_rows()
is zero, orkeys
is empty or has no nulls, there is no error, and an emptytable
is returned- Parameters:
input – [in] The input
table_view
to filterkeys – [in] vector of indices representing key columns from
input
keep_threshold – [in] The minimum number of non-null fields in a row required to keep the row.
mr – [in] Device memory resource used to allocate the returned table’s device memory
- Returns:
Table containing all rows of the
input
with at leastkeep_threshold
non-null fields inkeys
.
-
std::unique_ptr<table> drop_nulls(table_view const &input, std::vector<size_type> const &keys, rmm::mr::device_memory_resource *mr = rmm::mr::get_current_device_resource())#
Filters a table to remove null elements.
Filters the rows of the
input
considering specified columns indicated inkeys
for validity / null values.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}}
Same as drop_nulls but defaults keep_threshold to the number of columns in
keys
.- Parameters:
input – [in] The input
table_view
to filterkeys – [in] vector of indices representing key columns from
input
mr – [in] Device memory resource used to allocate the returned table’s device memory
- Returns:
Table containing all rows of the
input
without nulls in the columns ofkeys
.
-
std::unique_ptr<table> drop_nans(table_view const &input, std::vector<size_type> const &keys, cudf::size_type keep_threshold, rmm::mr::device_memory_resource *mr = rmm::mr::get_current_device_resource())#
Filters a table to remove NANs with threshold count.
Filters the rows of the
input
considering specified columns indicated inkeys
for NANs. These key columns must be of floating-point type.Given an input table_view, row
i
from the input columns is copied to the output if the same rowi
ofkeys
has at leastkeep_threshold
non-NAN elements.This operation is stable: the input order is preserved in the output.
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}}
Note
if
input.num_rows()
is zero, orkeys
is empty, there is no error, and an emptytable
is returned- Throws:
cudf::logic_error – if The
keys
columns are not floating-point type.- Parameters:
input – [in] The input
table_view
to filterkeys – [in] vector of indices representing key columns from
input
keep_threshold – [in] The minimum number of non-NAN elements in a row required to keep the row.
mr – [in] Device memory resource used to allocate the returned table’s device memory
- Returns:
Table containing all rows of the
input
with at leastkeep_threshold
non-NAN elements inkeys
.
-
std::unique_ptr<table> drop_nans(table_view const &input, std::vector<size_type> const &keys, rmm::mr::device_memory_resource *mr = rmm::mr::get_current_device_resource())#
Filters a table to remove NANs.
Filters the rows of the
input
considering specified columns indicated inkeys
for NANs. These key columns must be of floating-point type.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}}
Same as drop_nans but defaults keep_threshold to the number of columns in
keys
.- Parameters:
input – [in] The input
table_view
to filterkeys – [in] vector of indices representing key columns from
input
mr – [in] Device memory resource used to allocate the returned table’s device memory
- Returns:
Table containing all rows of the
input
without NANs in the columns ofkeys
.
-
std::unique_ptr<table> apply_boolean_mask(table_view const &input, column_view const &boolean_mask, rmm::mr::device_memory_resource *mr = rmm::mr::get_current_device_resource())#
Filters
input
usingboolean_mask
of boolean values as a mask.Given an input
table_view
and a maskcolumn_view
, an elementi
from each column_view of theinput
is copied to the corresponding output column if the corresponding elementi
in the mask is non-null andtrue
. This operation is stable: the input order is preserved.Note
if
input.num_rows()
is zero, there is no error, and an empty table is returned.- Throws:
cudf::logic_error – if
input.num_rows() != boolean_mask.size()
.cudf::logic_error – if
boolean_mask
is nottype_id::BOOL8
type.
- Parameters:
input – [in] The input table_view to filter
boolean_mask – [in] A nullable column_view of type type_id::BOOL8 used as a mask to filter the
input
.mr – [in] Device memory resource used to allocate the returned table’s device memory
- Returns:
Table containing copy of all rows of
input
passing the filter defined byboolean_mask
.
-
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::mr::device_memory_resource *mr = rmm::mr::get_current_device_resource())#
Create a new table with consecutive duplicate rows removed.
Given an
input
table_view, each row is copied to the output table to create a set of distinct rows. If there are duplicate rows, which row is copied depends on thekeep
parameter.The order of rows in the output table remains the same as in the input.
A row is distinct if there are no equivalent rows in the table. A row is unique if there is no adjacent equivalent row. That is, keeping distinct rows removes all duplicates in the table/column, while keeping unique rows only removes duplicates from consecutive groupings.
Performance hint: if the input is pre-sorted,
cudf::unique
can produce an equivalent result (i.e., same set of output rows) but with less running time thancudf::distinct
.- Throws:
cudf::logic_error – if the
keys
column indices are out of bounds in theinput
table.- Parameters:
input – [in] input table_view to copy only unique rows
keys – [in] vector of indices representing key columns from
input
keep – [in] keep any, first, last, or none of the found duplicates
nulls_equal – [in] flag to denote nulls are equal if null_equality::EQUAL, nulls are not equal if null_equality::UNEQUAL
mr – [in] Device memory resource used to allocate the returned table’s device memory
- Returns:
Table with unique rows from each sequence of equivalent rows as specified by
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::mr::device_memory_resource *mr = rmm::mr::get_current_device_resource())#
Create a new table without duplicate rows.
Given an
input
table_view, each row is copied to the output table to create a set of distinct rows. If there are duplicate rows, which row is copied depends on thekeep
parameter.The order of rows in the output table is not specified.
Performance hint: if the input is pre-sorted,
cudf::unique
can produce an equivalent result (i.e., same set of output rows) but with less running time thancudf::distinct
.- Parameters:
input – The input table
keys – Vector of indices indicating key columns in the
input
tablekeep – Copy any, first, last, or none of the found duplicates
nulls_equal – Flag to specify whether null elements should be considered as equal
nans_equal – Flag to specify whether NaN elements should be considered as equal
mr – Device memory resource used to allocate the returned table
- Returns:
Table with distinct rows in an unspecified order
-
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::mr::device_memory_resource *mr = rmm::mr::get_current_device_resource())#
Create a column of indices of all distinct rows in the input table.
Given an
input
table_view, an output vector of all row indices of the distinct rows is generated. If there are duplicate rows, which index is kept depends on thekeep
parameter.- Parameters:
input – The input table
keep – Get index of any, first, last, or none of the found duplicates
nulls_equal – Flag to specify whether null elements should be considered as equal
nans_equal – Flag to specify whether NaN elements should be considered as equal
stream – CUDA stream used for device memory operations and kernel launches
mr – Device memory resource used to allocate the returned vector
- Returns:
Column containing the result indices
-
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::mr::device_memory_resource *mr = rmm::mr::get_current_device_resource())#
Create a new table without duplicate rows, preserving input order.
Given an
input
table_view, each row is copied to the output table to create a set of distinct rows. The input row order is preserved. If there are duplicate rows, which row is copied depends on thekeep
parameter.This API produces the same output rows as
cudf::distinct
, but with input order preserved.Note that when
keep
isKEEP_ANY
, the choice of which duplicate row to keep is arbitrary, but the returned table will retain the input order. That is, if the key column contained1, 2, 1
with another values column3, 4, 5
, the result could contain values3, 4
or4, 5
but not4, 3
or5, 4
.- Parameters:
input – The input table
keys – Vector of indices indicating key columns in the
input
tablekeep – Copy any, first, last, or none of the found duplicates
nulls_equal – Flag to specify whether null elements should be considered as equal
nans_equal – Flag to specify whether NaN elements should be considered as equal
mr – Device memory resource used to allocate the returned table
- Returns:
Table with distinct rows, preserving input order
-
cudf::size_type unique_count(column_view const &input, null_policy null_handling, nan_policy nan_handling)#
Count the number of consecutive groups of equivalent rows in a column.
If
null_handling
is null_policy::EXCLUDE andnan_handling
is nan_policy::NAN_IS_NULL, bothNaN
andnull
values are ignored. Ifnull_handling
is null_policy::EXCLUDE andnan_handling
is nan_policy::NAN_IS_VALID, onlynull
is ignored,NaN
is considered in count.null
s are handled as equal.- Parameters:
input – [in] The column_view whose consecutive groups of equivalent rows will be counted
null_handling – [in] flag to include or ignore
null
while countingnan_handling – [in] flag to consider
NaN==null
or not
- Returns:
number of consecutive groups of equivalent rows in the column
-
cudf::size_type unique_count(table_view const &input, null_equality nulls_equal = null_equality::EQUAL)#
Count the number of consecutive groups of equivalent rows in a table.
- Parameters:
input – [in] Table whose consecutive groups of equivalent rows will be counted
nulls_equal – [in] flag to denote if null elements should be considered equal nulls are not equal if null_equality::UNEQUAL.
- Returns:
number of consecutive groups of equivalent rows in the column
-
cudf::size_type distinct_count(column_view const &input, null_policy null_handling, nan_policy nan_handling)#
Count the distinct elements in the column_view.
If
nulls_equal == nulls_equal::UNEQUAL
, allnull
s are distinct.Given an input column_view, number of distinct elements in this column_view is returned.
If
null_handling
is null_policy::EXCLUDE andnan_handling
is nan_policy::NAN_IS_NULL, bothNaN
andnull
values are ignored. Ifnull_handling
is null_policy::EXCLUDE andnan_handling
is nan_policy::NAN_IS_VALID, onlynull
is ignored,NaN
is considered in distinct count.null
s are handled as equal.- Parameters:
input – [in] The column_view whose distinct elements will be counted
null_handling – [in] flag to include or ignore
null
while countingnan_handling – [in] flag to consider
NaN==null
or not
- Returns:
number of distinct rows in the table
-
cudf::size_type distinct_count(table_view const &input, null_equality nulls_equal = null_equality::EQUAL)#
Count the distinct rows in a table.
- Parameters:
input – [in] Table whose distinct rows will be counted
nulls_equal – [in] flag to denote if null elements should be considered equal. nulls are not equal if null_equality::UNEQUAL.
- Returns:
number of distinct rows in the table
-
enum class duplicate_keep_option#