字符串组合#

group 组合

枚举

enum class separator_on_nulls#

指定在空字符串元素中如何添加分隔符的设置。

enumerator YES#

总是在元素之间添加分隔符。

enumerator NO#

如果元素为空,则不添加分隔符。

enum class output_if_empty_list#

指定当输入列表为空时,join_list_elements 将输出什么的设置。

enumerator EMPTY_STRING#

空列表将产生空字符串。

enumerator NULL_ELEMENT#

空列表将产生一个空值。

函数

std::unique_ptr<column> join_strings(strings_column_view const &input, string_scalar const &separator = string_scalar(""), string_scalar const &narep = string_scalar("", false), rmm::cuda_stream_view stream = cudf::get_default_stream(), rmm::device_async_resource_ref mr = cudf::get_current_device_resource_ref())#

将列中的所有字符串连接成一个由可选分隔符字符串分隔的新字符串。

这返回一个包含一个字符串的列。除非 narep 参数指定了替换字符串,否则所有空条目都将被忽略。

Example:
s = ['aa', null, '', 'zz' ]
r = join_strings(s,':','_')
r is ['aa:_::zz']
抛出异常:

cudf::logic_error – 如果分隔符无效。

参数:
  • input – 用于此操作的字符串

  • separator – 应插入到每个字符串之间的字符串。默认为空字符串。

  • narep – 用于替换找到的任何空字符串的字符串。默认的无效标量将忽略所有空条目。

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

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

返回:

包含一个字符串的新列。

std::unique_ptr<column> concatenate(table_view const &strings_columns, strings_column_view const &separators, string_scalar const &separator_narep = string_scalar("", false), string_scalar const &col_narep = string_scalar("", false), separator_on_nulls separate_nulls = separator_on_nulls::YES, rmm::cuda_stream_view stream = cudf::get_default_stream(), rmm::device_async_resource_ref mr = cudf::get_current_device_resource_ref())#

使用每行的分隔符连接字符串列列表,并将结果作为字符串列返回。

每个新字符串都是通过将同一行中的字符串使用该行提供的行分隔符进行连接来创建的。以下规则适用

  • 如果给定行的行分隔符为空,则该行的输出列为空,除非存在有效的 separator_narep

  • 如果 separate_nullsYES,则分隔符应用于两个输出行值之间,如果 separate_nullsNO,则仅应用于有效行之间。

  • 如果 separator_narepcol_narep 都有效,则输出列始终不可为空。

Example:
c0   = ['aa', null, '',  'ee',  null, 'ff']
c1   = [null, 'cc', 'dd', null, null, 'gg']
c2   = ['bb', '',   null, null, null, 'hh']
sep  = ['::', '%%', '^^', '!',  '*',  null]
out = concatenate({c0, c1, c2}, sep)
// all rows have at least one null or sep[i]==null
out is [null, null, null, null, null, null]

sep_rep = '+'
out = concatenate({c0, c1, c2}, sep, sep_rep)
// all rows with at least one null output as null
out is [null, null, null, null, null, 'ff+gg+hh']

col_narep = '-'
sep_na = non-valid scalar
out = concatenate({c0, c1, c2}, sep, sep_na, col_narep)
// only the null entry in the sep column produces a null row
out is ['aa::-::bb', '-%%cc%%', '^^dd^^-', 'ee!-!-', '-*-*-', null]

col_narep = ''
out = concatenate({c0, c1, c2}, sep, sep_rep, col_narep, separator_on_nulls:NO)
// parameter suppresses separator for null rows
out is ['aa::bb', 'cc%%', '^^dd', 'ee', '', 'ff+gg+hh']
抛出异常:
参数:
  • strings_columns – 要连接的字符串列列表

  • separators – 提供给定行分隔符的字符串列

  • separator_narep – 用于替换给定行的空分隔符的字符串。默认的无效标量表示不替换行分隔符值。

  • col_narep – 应用于替换任何列中找到的空字符串的字符串。默认的无效标量表示不替换空列值。

  • separate_nulls – 如果为 YES,并且 col_narep 有效,则分隔符包含在空行中。

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

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

返回:

包含连接结果的新列

std::unique_ptr<column> concatenate(table_view const &strings_columns, string_scalar const &separator = string_scalar(""), string_scalar const &narep = string_scalar("", false), separator_on_nulls separate_nulls = separator_on_nulls::YES, rmm::cuda_stream_view stream = cudf::get_default_stream(), rmm::device_async_resource_ref mr = cudf::get_current_device_resource_ref())#

按行连接给定的字符串列列表,并返回单个字符串列结果。

每个新字符串都是通过将同一行中的字符串使用提供的分隔符进行连接来创建的。

任何带有空条目的行将导致相应的输出行为空条目,除非指定了 narep 字符串来替换它。

如果 separate_nulls 设置为 NO 并且 narep 有效,则在空元素之间不添加分隔符。否则,如果 narep 有效,则始终添加分隔符。

输入 strings_columns 表中必须指定多个列。

Example:
s1 = ['aa', null, '', 'dd']
s2 = ['', 'bb', 'cc', null]
out = concatenate({s1, s2})
out is ['aa', null, 'cc', null]

out = concatenate({s1, s2}, ':', '_')
out is ['aa:', '_:bb', ':cc', 'dd:_']

out = concatenate({s1, s2}, ':', '', separator_on_nulls::NO)
out is ['aa:', 'bb', ':cc', 'dd']
抛出异常:
参数:
  • strings_columns – 要连接的字符串列列表

  • separator – 应插入到每行中每个字符串之间的字符串。默认为空字符串。

  • narep – 用于替换任何列中找到的空字符串的字符串。默认的无效标量表示任何列中的任何空条目将导致该行的结果为空。

  • separate_nulls – 如果为 YES,并且 narep 有效,则分隔符包含在空行中

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

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

返回:

包含连接结果的新列

std::unique_ptr<column> join_list_elements(lists_column_view const &lists_strings_column, strings_column_view const &separators, string_scalar const &separator_narep = string_scalar("", false), string_scalar const &string_narep = string_scalar("", false), separator_on_nulls separate_nulls = separator_on_nulls::YES, output_if_empty_list empty_list_policy = output_if_empty_list::EMPTY_STRING, rmm::cuda_stream_view stream = cudf::get_default_stream(), rmm::device_async_resource_ref mr = cudf::get_current_device_resource_ref())#

给定一个字符串列表列(每行是一个字符串列表),连接每行中的字符串,并返回单个字符串列结果。

每个新字符串都是通过将同一行(同一列表元素)中的字符串使用 separators 字符串列中提供的行分隔符进行连接来创建的。

空列表行将始终在输出行中产生空字符串。任何包含空元素的非空列表行将导致相应的输出行为空,除非提供了有效的 string_narep 标量来替换它。 separators 列中的任何空行也将导致输出行为空,除非提供了有效的 separator_narep 标量来替换空分隔符。

如果 separate_nulls 设置为 NO 并且 string_narep 有效,则在空元素之间不添加分隔符。否则,如果 string_narep 有效,则始终添加分隔符。

如果 empty_list_policy 设置为 EMPTY_STRING,任何空列表输入行将导致输出空字符串。否则,输出将为空。

在输入列表行包含所有空元素的特殊情况下,无论 string_narepseparate_nulls 的值如何,输出将与空输入列表的情况相同。

Example:
s = [ ['aa', 'bb', 'cc'], null, ['', 'dd'], ['ee', null], ['ff', 'gg'] ]
sep  = ['::', '%%',  '!',  '*',  null]

out = join_list_elements(s, sep)
out is ['aa::bb::cc', null, '!dd', null, null]

out = join_list_elements(s, sep, ':', '_')
out is ['aa::bb::cc', null,  '!dd', 'ee*_', 'ff:gg']

out = join_list_elements(s, sep, ':', '', separator_on_nulls::NO)
out is ['aa::bb::cc', null,  '!dd', 'ee', 'ff:gg']
抛出异常:
  • cudf::logic_error – 如果输入列不是字符串列表列。

  • cudf::logic_error – 如果 separatorslists_strings_column 的行数不匹配

参数:
  • lists_strings_column – 包含要连接的字符串列表的列

  • separators – 提供连接分隔符的字符串列

  • separator_narep – 应用于替换空分隔符的字符串。默认是无效标量,表示包含空分隔符的行将在相应的输出行中产生空字符串。

  • string_narep – 用于替换任何非空列表行中的空字符串的字符串。默认是无效标量,表示包含空字符串的列表行将在相应的输出行中产生空字符串。

  • separate_nulls – 如果为 YES,并且 narep 有效,则分隔符包含在空行中

  • empty_list_policy – 如果设置为 EMPTY_STRING,任何空列表输入行将产生空字符串。否则,将产生空值。

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

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

返回:

包含连接结果的新字符串列

std::unique_ptr<column> join_list_elements(lists_column_view const &lists_strings_column, string_scalar const &separator = string_scalar(""), string_scalar const &narep = string_scalar("", false), separator_on_nulls separate_nulls = separator_on_nulls::YES, output_if_empty_list empty_list_policy = output_if_empty_list::EMPTY_STRING, rmm::cuda_stream_view stream = cudf::get_default_stream(), rmm::device_async_resource_ref mr = cudf::get_current_device_resource_ref())#

给定一个字符串列表列(每行是一个字符串列表),连接每行中的字符串,并返回单个字符串列结果。

每个新字符串都是通过将同一行(同一列表元素)中的字符串使用提供的 separator 进行连接来创建的。

空列表行将始终在输出行中产生空字符串。任何包含空元素的非空列表行将导致相应的输出行为空,除非指定了 narep 字符串来替换它。

如果 separate_nulls 设置为 NO 并且 narep 有效,则在空元素之间不添加分隔符。否则,如果 narep 有效,则始终添加分隔符。

如果 empty_list_policy 设置为 EMPTY_STRING,任何空列表输入行将导致输出空字符串。否则,输出将为空。

在输入列表行包含所有空元素的特殊情况下,无论 narepseparate_nulls 的值如何,输出将与空输入列表的情况相同。

Example:
s = [ ['aa', 'bb', 'cc'], null, ['', 'dd'], ['ee', null], ['ff'] ]

out = join_list_elements(s)
out is ['aabbcc', null, 'dd', null, 'ff']

out = join_list_elements(s, ':', '_')
out is ['aa:bb:cc', null,  ':dd', 'ee:_', 'ff']

out = join_list_elements(s, ':', '', separator_on_nulls::NO)
out is ['aa:bb:cc', null,  ':dd', 'ee', 'ff']
抛出异常:
参数:
  • lists_strings_column – 包含要连接的字符串列表的列

  • separator – 插入到每个列表行字符串之间的字符串。默认为空字符串。

  • narep – 用于替换任何非空列表行中的空字符串的字符串。默认是无效标量,表示包含空字符串的列表行将在相应的输出行中产生空字符串。

  • separate_nulls – 如果为 YES,并且 narep 有效,则分隔符包含在空行中

  • empty_list_policy – 如果设置为 EMPTY_STRING,任何空列表输入行将产生空字符串。否则,将产生空值。

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

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

返回:

包含连接结果的新字符串列