字典更新#

group 更新键

函数

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())#

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

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

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]}

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

抛出:
  • cudf::logic_error – 如果 new_keys 的类型与 dictionary_column 中的键类型不匹配。

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

参数:
  • dictionary_column – 现有字典列。

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

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

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

返回:

新的字典列。

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]}
请注意,“a” 已被移除,因此输出行 [2] 变为空值。

抛出:
  • cudf::logic_error – 如果 keys_to_remove 的类型与 dictionary_column 中的键类型不匹配。

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

参数:
  • dictionary_column – 现有字典列。

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

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

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

返回:

新的字典列。

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]}
参数:
  • dictionary_column – 现有字典列。

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

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

返回:

新的字典列。

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())#

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

在 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]}
抛出:
参数:
  • dictionary_column – 现有字典列。

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

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

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

返回:

新的字典列。

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。结果是一个包含通用键集的新字典向量。

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

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

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

返回:

新的字典列。