字典更新#

group dictionary_update

函数

std::unique_ptr<column> add_keys(dictionary_column_view const &dictionary_column, column_view const &new_keys, rmm::cuda_stream_view stream = cudf::get_default_stream(), rmm::device_async_resource_ref mr = cudf::get_current_device_resource_ref())#

通过将新键元素添加到现有的dictionary_column来创建一个新的字典列。

如果任何新键在现有字典元素之前排序,则索引会更新。

d1 = { keys=["a", "c", "d"], indices=[2, 0, 1, 0, 1]}
d2 = add_keys( d1, ["b", "c"] )
d2 is now {keys=["a", "b", "c", "d"], indices=[3, 0, 2, 0, 2]}

输出列将具有与输入列相同的行数。输入列中的空条目将被复制到输出列中。此操作不会创建新的空条目。

Throws:
  • cudf::logic_error – 如果 new_keys 的类型与 dictionary_column 中的 keys 类型不匹配。

  • cudf::logic_error – 如果新的键包含空值。

Parameters:
  • dictionary_column – 现有的字典列。

  • new_keys – 要合并到 dictionary_column 中的新键。

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

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

Returns:

新字典列。

std::unique_ptr<column> remove_keys(dictionary_column_view const &dictionary_column, column_view const &keys_to_remove, rmm::cuda_stream_view stream = cudf::get_default_stream(), rmm::device_async_resource_ref mr = cudf::get_current_device_resource_ref())#

通过从现有的 dictionary_column 中移除指定的键来创建一个新的字典列。

输出列将具有与输入列相同的行数。输入列中的空条目将被复制到输出列中。索引将更新为剩余键的新位置。任何指向已删除键的索引都会将该行设置为空。

d1 = {keys=["a", "c", "d"], indices=[2, 0, 1, 0, 2]}
d2 = remove_keys( d1, ["b", "c"] )
d2 is now {keys=["a", "d"], indices=[1, 0, x, 0, 1], valids=[1, 1, 0, 1, 1]}
Note that “a” has been removed so output row[2] becomes null.

Throws:
  • cudf::logic_error – 如果 keys_to_remove 的类型与 dictionary_column 中的 keys 类型不匹配。

  • cudf::logic_error – 如果 keys_to_remove 包含空值。

Parameters:
  • dictionary_column – 现有的字典列。

  • keys_to_remove – 要从 dictionary_column 中移除的键。

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

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

Returns:

新字典列。

std::unique_ptr<column> remove_unused_keys(dictionary_column_view const &dictionary_column, rmm::cuda_stream_view stream = cudf::get_default_stream(), rmm::device_async_resource_ref mr = cudf::get_current_device_resource_ref())#

通过移除未被任何索引引用的键来创建一个新的字典列。

索引已更新为剩余键的新位置值。

d1 = {["a","c","d"],[2,0,2,0]}
d2 = remove_unused_keys(d1)
d2 is now {["a","d"],[1,0,1,0]}
Parameters:
  • dictionary_column – 现有的字典列。

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

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

Returns:

新字典列。

std::unique_ptr<column> set_keys(dictionary_column_view const &dictionary_column, column_view const &keys, rmm::cuda_stream_view stream = cudf::get_default_stream(), rmm::device_async_resource_ref mr = cudf::get_current_device_resource_ref())#

通过仅将指定的键应用于现有的字典列来创建一个新的字典列。

在keys参数中找到的任何新元素都会被添加到输出字典中。任何不在keys参数中的现有键将被移除。

输出列中的行数将与输入列中的行数相同。现有的空条目将被复制到输出列中。索引将被更新以反映新键的位置值。任何指向被移除键的索引将把这些行设置为空。

d1 = {keys=["a", "b", "c"], indices=[2, 0, 1, 2, 1]}
d2 = set_keys(existing_dict, ["b","c","d"])
d2 is now {keys=["b", "c", "d"], indices=[1, x, 0, 1, 0], valids=[1, 0, 1, 1, 1]}
Throws:
Parameters:
  • dictionary_column – 现有的字典列。

  • keys – 用于输出列的新键。不能包含空值。

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

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

Returns:

新字典列。

std::vector<std::unique_ptr<column>> match_dictionaries(cudf::host_span<dictionary_column_view const> input, rmm::cuda_stream_view stream = cudf::get_default_stream(), rmm::device_async_resource_ref mr = cudf::get_current_device_resource_ref())#

创建新的字典,这些字典的键是从输入字典中合并的。

这将连接每个字典的键,然后在每个字典上调用set_keys。结果是一个具有共同键集的新字典向量。

Parameters:
  • input – 用于匹配键的字典列。

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

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

Returns:

新的字典列。