字符串转换#

group strings_convert

函数

std::unique_ptr<column> to_booleans(strings_column_view const &input, string_scalar const &true_string, rmm::cuda_stream_view stream = cudf::get_default_stream(), rmm::device_async_resource_ref mr = cudf::get_current_device_resource_ref())#

通过解析提供的字符串列中的字符串中的布尔值,返回一个新的BOOL8列。

任何空条目将导致输出列中的相应空条目。

Parameters:
  • input – 此操作的字符串实例

  • true_string – 用于表示true的字符串。不匹配的字符串为false

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

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

Returns:

从字符串转换的新 BOOL8 列

std::unique_ptr<column> from_booleans(column_view const &booleans, string_scalar const &true_string, string_scalar const &false_string, rmm::cuda_stream_view stream = cudf::get_default_stream(), rmm::device_async_resource_ref mr = cudf::get_current_device_resource_ref())#

返回一个新的字符串列,将提供的列中的布尔值转换为字符串。

任何空条目将导致输出列中的相应空条目。

Throws:

cudf::logic_error – 如果输入列不是BOOL8类型。

Parameters:
  • booleans – 要转换的布尔列

  • true_string – 用于输出列中表示true的字符串

  • false_string – 用于输出列中表示false的字符串

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

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

Returns:

新字符串列

std::unique_ptr<column> to_timestamps(strings_column_view const &input, data_type timestamp_type, std::string_view format, rmm::cuda_stream_view stream = cudf::get_default_stream(), rmm::device_async_resource_ref mr = cudf::get_current_device_resource_ref())#

返回一个新的时间戳列,将字符串列转换为时间戳,使用提供的格式模式。

格式模式可以包括以下说明符:“%Y,%y,%m,%d,%H,%I,%p,%M,%S,%f,%z”

Specifier

描述

%d

月份中的第几天:01-31

%m

一年中的月份:01-12

%y

不带世纪的年份:00-99。[0,68] 映射到 [2000,2068],[69,99] 映射到 [1969,1999]

%Y

带世纪的年份:0001-9999

%H

一天中的24小时制:00-23

%I

一天中的12小时制:01-12

%M

小时中的分钟:00-59

%S

分钟中的秒数:00-59。不支持闰秒。

%f

6位微秒:000000-999999

%z

UTC偏移量,格式为±HHMM 示例 +0500

%j

一年中的第几天:001-366

%p

仅识别‘AM’, ‘PM’ 或 ‘am’, ‘pm’

%W

一年中的周数,以星期一作为一周的第一天:00-53

%w

星期几:0-6 = 星期日-星期六

%U

一年中的周数,以周日为一周的第一天:00-53

%u

星期几:1-7 = 星期一-星期日

目前不支持其他说明符。

无效的格式不会被检查。如果字符串包含意外或不足的字符,则该输出行条目的时间戳值是未定义的。

任何空字符串条目将导致输出列中的相应行为空。

生成的时间单位由timestamp_type参数指定。时间单位与“%f”说明符解析的数字位数无关。“%f”支持一个精度值来读取数字位数。使用单个整数值(1-9)指定精度,如下所示:使用“%3f”表示毫秒,“%6f”表示微秒,“%9f”表示纳秒。

虽然“%S”不支持闰秒,但不会对值进行检查。可以使用cudf::strings::is_timestamp来验证值的有效范围。

如果同时指定了“%W”/“%w”(或“%U/%u”)和“%m”/“%d”,则在计算时间戳结果的日期部分时,“%W”/U和“%w”/u的值优先。

Throws:

cudf::logic_error – 如果 timestamp_type 不是时间戳类型。

Parameters:
  • input – 此操作的字符串实例

  • timestamp_type – 用于创建输出列的时间戳类型

  • format – 指定字符串中时间戳格式的字符串

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

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

Returns:

新的日期时间列

std::unique_ptr<column> is_timestamp(strings_column_view const &input, std::string_view format, rmm::cuda_stream_view stream = cudf::get_default_stream(), rmm::device_async_resource_ref mr = cudf::get_current_device_resource_ref())#

验证给定的字符串列可以使用提供的格式模式解析为时间戳。

格式模式可以包括以下说明符:“%Y,%y,%m,%d,%H,%I,%p,%M,%S,%f,%z”

Specifier

描述

%d

月份中的第几天:01-31

%m

一年中的月份:01-12

%y

不带世纪的年份:00-99。[0,68] 映射到 [2000,2068],[69,99] 映射到 [1969,1999]

%Y

带世纪的年份:0001-9999

%H

一天中的24小时制:00-23

%I

一天中的12小时制:01-12

%M

小时中的分钟:00-59

%S

分钟中的秒数:00-59。不支持闰秒。

%f

6位微秒:000000-999999

%z

UTC偏移量,格式为±HHMM 示例 +0500

%j

一年中的第几天:001-366

%p

仅识别‘AM’, ‘PM’ 或 ‘am’, ‘pm’

%W

一年中的周数,以星期一作为一周的第一天:00-53

%w

星期几:0-6 = 星期日-星期六

%U

一年中的周数,以周日为一周的第一天:00-53

%u

星期几:1-7 = 星期一-星期日

目前不支持其他格式说明符。“%f”支持精度值来读取数字。使用单个整数值(1-9)指定精度,如下所示:使用“%3f”表示毫秒,“%6f”表示微秒,“%9f”表示纳秒。

任何空字符串条目将导致输出列中的相应行为空。

这将返回一个类型为 BOOL8 的列,其中 true 行表示相应的输入字符串可以使用给定的格式正确解析。

Parameters:
  • input – 此操作的字符串实例

  • format – 指定字符串中时间戳格式的字符串

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

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

Returns:

新的 BOOL8 列

std::unique_ptr<column> from_timestamps(column_view const &timestamps, std::string_view format = "%Y-%m-%dT%H:%M:%SZ", strings_column_view const &names = strings_column_view(column_view{data_type{type_id::STRING}, 0, nullptr, nullptr, 0}), rmm::cuda_stream_view stream = cudf::get_default_stream(), rmm::device_async_resource_ref mr = cudf::get_current_device_resource_ref())#

返回一个新的字符串列,使用提供的格式模式将时间戳列转换为字符串。

格式模式可以包括以下说明符:“%Y,%y,%m,%d,%H,%I,%p,%M,%S,%f,%z,%Z”

Specifier

描述

%d

月份中的第几天:01-31

%m

一年中的月份:01-12

%y

不带世纪的年份:00-99

%Y

带世纪的年份:0001-9999

%H

一天中的24小时制:00-23

%I

一天中的12小时制:01-12

%M

小时中的分钟:00-59

%S

分钟中的秒数:00-59

%f

6位微秒:000000-999999

%z

总是输出“+0000”

%Z

总是输出“UTC”

%j

一年中的第几天:001-366

%u

ISO 工作日,其中星期一为1,星期日为7

%w

星期几,其中星期日为0,星期六为6

%U

以周日为一年的第一天的周数:00-53

%W

一年中的周数,以星期一为第一天:00-53

%V

按ISO-8601格式的年份周数:01-53

%G

基于ISO-8601周的年:0000-9999

%p

来自 timestamp_names::am_str/pm_str 的 AM/PM

%a

names参数中获取的星期几缩写

%A

names参数中获取的星期几

%b

names 参数中获取的月份名称缩写

%B

names 参数中获取的月份名称

额外的描述可以在这里找到:https://en.cppreference.com/w/cpp/chrono/system_clock/formatter

不会检查无效格式或无效时间戳值。所有时间戳值都格式化为UTC。

任何空输入条目将导致输出列中的相应条目为空。

输入列的时间单位不会影响“%f”说明符写入的数字位数。“%f”支持一个精度值来写出亚秒值的数字位数。在“%”和“f”之间使用一个整数值(1-9)来指定精度,如下所示:使用“%3f”表示毫秒,使用“%6f”表示微秒,使用“%9f”表示纳秒。如果精度高于单位,则在亚秒值的右侧填充零。如果精度低于单位,亚秒值可能会被截断。

如果格式中包含“%a”、“%A”、“%b”、“%B”说明符,调用者应按照以下指南在names字符串列中提供格式名称:

["AM", "PM",                             // specify the AM/PM strings
 "Sunday", "Monday", ..., "Saturday",    // Weekday full names
 "Sun", "Mon", ..., "Sat",               // Weekday abbreviated names
 "January", "February", ..., "December", // Month full names
 "Jan", "Feb", ..., "Dec"]               // Month abbreviated names

如果未为这些说明符提供格式名称,则结果未定义。

这些格式名称可以通过使用C++ clocale(std)库或Python locale库中的nl_langinfo函数来获取特定区域设置的格式名称。

以下代码是一个使用C++标准函数从区域设置中检索这些字符串的示例:

#include <clocale>
#include <langinfo.h>

// note: install language pack on Ubuntu using 'apt-get install language-pack-de'
{
  // set to a German language locale for date settings
  std::setlocale(LC_TIME, "de_DE.UTF-8");

  std::vector<std::string> names({nl_langinfo(AM_STR), nl_langinfo(PM_STR),
    nl_langinfo(DAY_1), nl_langinfo(DAY_2), nl_langinfo(DAY_3), nl_langinfo(DAY_4),
     nl_langinfo(DAY_5), nl_langinfo(DAY_6), nl_langinfo(DAY_7),
    nl_langinfo(ABDAY_1), nl_langinfo(ABDAY_2), nl_langinfo(ABDAY_3), nl_langinfo(ABDAY_4),
     nl_langinfo(ABDAY_5), nl_langinfo(ABDAY_6), nl_langinfo(ABDAY_7),
    nl_langinfo(MON_1), nl_langinfo(MON_2), nl_langinfo(MON_3), nl_langinfo(MON_4),
     nl_langinfo(MON_5), nl_langinfo(MON_6), nl_langinfo(MON_7), nl_langinfo(MON_8),
     nl_langinfo(MON_9), nl_langinfo(MON_10), nl_langinfo(MON_11), nl_langinfo(MON_12),
    nl_langinfo(ABMON_1), nl_langinfo(ABMON_2), nl_langinfo(ABMON_3), nl_langinfo(ABMON_4),
     nl_langinfo(ABMON_5), nl_langinfo(ABMON_6), nl_langinfo(ABMON_7), nl_langinfo(ABMON_8),
     nl_langinfo(ABMON_9), nl_langinfo(ABMON_10), nl_langinfo(ABMON_11), nl_langinfo(ABMON_12)});

  std::setlocale(LC_TIME,""); // reset to default locale
}
Throws:
  • cudf::logic_error – 如果 timestamps 列参数不是时间戳类型。

  • cudf::logic_error – 如果 format 字符串为空

  • cudf::logic_error – 如果 names.size() 是无效的大小。必须是 0 或 40 个字符串。

Parameters:
  • timestamps – 要转换的时间戳值

  • format – 指定输出格式的字符串。默认格式为“%Y-%m-%dT%H:%M:%SZ”。

  • names – 用于星期(“%a”,“%A”)和月份(“%b”,“%B”)的字符串名称。默认是一个空的 strings_column_view

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

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

Returns:

带有格式化时间戳的新字符串列

std::unique_ptr<column> to_durations(strings_column_view const &input, data_type duration_type, std::string_view format, rmm::cuda_stream_view stream = cudf::get_default_stream(), rmm::device_async_resource_ref mr = cudf::get_current_device_resource_ref())#

返回一个新的持续时间列,使用提供的格式模式将字符串列转换为持续时间。

格式模式可以包括以下说明符:“%%,%n,%t,%D,%H,%I,%M,%S,%p,%R,%T,%r,%OH,%OI,%OM,%OS”

指定符

描述

范围

%%

一个字面的 % 字符

%

%n

换行符

\n

%t

一个水平制表符

\t

%D

天数

-2,147,483,648 到 2,147,483,647

%H

一天中的24小时

00 到 23

%I

一天中的12小时制

00 到 11

%M

小时中的分钟

00 到 59

%S

分钟中的秒数

00 到 59.999999999

%OH

与H相同但没有符号

00到23

%OI

与I相同但没有符号

00到11

%OM

与M相同但没有符号

00到59

%OS

与S相同但没有符号

00到59

%p

与12小时制相关的AM/PM标识

‘AM’ 或 ‘PM’

%R

等同于“%H:%M”

%T

等同于“%H:%M:%S”

%r

等同于“%OI:%OM:%OS %p”

目前不支持其他说明符。

无效的格式不会被检查。如果字符串包含意外或不足的字符,则该输出行条目的持续时间值是未定义的。

任何空字符串条目将导致输出列中的相应行为空。

生成的时间单位由 duration_type 参数指定。

Throws:

cudf::logic_error – 如果 duration_type 不是持续时间类型。

Parameters:
  • input – 此操作的字符串实例

  • duration_type – 用于创建输出列的持续时间类型

  • format – 指定持续时间格式的字符串

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

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

Returns:

新的持续时间列

std::unique_ptr<column> from_durations(column_view const &durations, std::string_view format = "%D days %H:%M:%S", rmm::cuda_stream_view stream = cudf::get_default_stream(), rmm::device_async_resource_ref mr = cudf::get_current_device_resource_ref())#

返回一个新的字符串列,使用提供的格式模式将持续时间列转换为字符串。

格式模式可以包括以下说明符:“%%,%n,%t,%D,%H,%I,%M,%S,%p,%R,%T,%r,%OH,%OI,%OM,%OS”

指定符

描述

范围

%%

一个字面的 % 字符

%

%n

换行符

\n

%t

一个水平制表符

\t

%D

天数

-2,147,483,648 到 2,147,483,647

%H

一天中的24小时

00 到 23

%I

一天中的12小时制

00 到 11

%M

小时中的分钟

00 到 59

%S

分钟中的秒数

00 到 59.999999999

%OH

与H相同但没有符号

00到23

%OI

与I相同但没有符号

00到11

%OM

与M相同但没有符号

00到59

%OS

与S相同但没有符号

00到59

%p

与12小时制相关的AM/PM标识

‘AM’ 或 ‘PM’

%R

等同于“%H:%M”

%T

等同于“%H:%M:%S”

%r

等同于“%OI:%OM:%OS %p”

不会对无效格式或无效持续时间值进行检查。格式化尽可能遵循std::formatter的规范。

任何空输入条目将导致输出列中的相应条目为空。

输入列的时间单位影响秒的小数位数。毫秒使用3位,微秒使用6位,纳秒使用9位。如果持续时间值为负数,输出字符串中只写一个负号。带有符号的说明符是“%H,%I,%M,%S,%R,%T”。

Throws:

cudf::logic_error – 如果 durations 列参数不是持续时间类型。

Parameters:
  • durations – 要转换的持续时间值

  • format – 指定输出格式的字符串。默认格式为“D days H:M:S”。

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

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

Returns:

带有格式化持续时间的新字符串列

std::unique_ptr<column> to_fixed_point(strings_column_view const &input, data_type output_type, rmm::cuda_stream_view stream = cudf::get_default_stream(), rmm::device_async_resource_ref mr = cudf::get_current_device_resource_ref())#

返回一个新的定点列,从提供的字符串列中解析十进制值。

任何空条目都会导致输出列中的相应空条目。

预期的格式是 [sign][integer][.][fraction],其中符号可能不存在,-+,小数点 [.] 可能存在也可能不存在,integerfraction 由零个或多个 [0-9] 中的数字组成。无效的数据格式会导致相应输出行结果的行为未定义。

Example:
s = ['123', '-876', '543.2', '-0.12']
datatype = {DECIMAL32, scale=-2}
fp = to_fixed_point(s, datatype)
fp is [123400, -87600, 54320, -12]

不检查结果值类型的溢出。output_type 中的比例用于设置整数部分。

Throws:

cudf::logic_error – 如果 output_type 不是固定点小数类型。

Parameters:
  • input – 此操作的字符串实例

  • output_type – 返回的定点列类型,包括比例值

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

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

Returns:

新列 output_type

std::unique_ptr<column> from_fixed_point(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())#

返回一个新的字符串列,将定点值转换为字符串列。

任何空条目都会导致输出列中的相应空条目。

对于每个值,都会创建一个以10为基数的十进制字符串。负数在输出字符串中包含一个“-”前缀。列的刻度值用于放置小数点。负的刻度值可能会在小数点后添加填充的零。

Example:
fp is [110, 222, 3330, -440, -1] with scale = -2
s = from_fixed_point(fp)
s is now ['1.10', '2.22', '33.30', '-4.40', '-0.01']
Throws:

cudf::logic_error – 如果 input 列不是固定点小数类型。

Parameters:
  • input – 要转换的定点列

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

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

Returns:

新字符串列

std::unique_ptr<column> is_fixed_point(strings_column_view const &input, data_type decimal_type = data_type{type_id::DECIMAL64}, rmm::cuda_stream_view stream = cudf::get_default_stream(), rmm::device_async_resource_ref mr = cudf::get_current_device_resource_ref())#

返回一个布尔列,用于标识所有字符都可以转换为定点数的字符串。

符号和指数是可选的。小数点只能出现一次。此外,整数部分必须适合底层定点存储类型的大小限制。整数部分的值基于提供的decimal_type的比例。

Example:
s = ['123', '-456', '', '1.2.3', '+17E30', '12.34', '.789', '-0.005]
b = is_fixed_point(s)
b is [true, true, false, false, true, true, true, true]

任何空条目都会导致输出列中的相应空条目。

Throws:

cudf::logic_error – 如果 decimal_type 不是定点小数类型。

Parameters:
  • input – 此操作的字符串实例

  • decimal_type – 仅用于检查溢出的定点类型(带比例)

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

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

Returns:

每个字符串的布尔结果新列

std::unique_ptr<column> to_floats(strings_column_view const &strings, data_type output_type, rmm::cuda_stream_view stream = cudf::get_default_stream(), rmm::device_async_resource_ref mr = cudf::get_current_device_resource_ref())#

通过解析提供的字符串列中每个字符串的浮点值,返回一个新的数值列。

任何空条目将导致输出列中的相应空条目。

仅识别字符[0-9]加上前缀‘-’和‘+’以及小数点‘.’。此外,还支持科学计数法(例如“-1.78e+5”)。

Throws:

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

Parameters:
  • strings – 此操作的字符串实例

  • output_type – 返回的浮点数列的类型

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

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

Returns:

新列,其中浮点数从字符串转换而来

std::unique_ptr<column> from_floats(column_view const &floats, rmm::cuda_stream_view stream = cudf::get_default_stream(), rmm::device_async_resource_ref mr = cudf::get_current_device_resource_ref())#

返回一个新的字符串列,将提供的列中的浮点值转换为字符串。

任何空条目将导致输出列中的相应空条目。

对于每个浮点数,都会以10进制创建一个字符串。负数将包含一个“-”前缀。产生超过10位有效数字的数字将生成包含科学记数法的字符串(例如“-1.78e+15”)。

Throws:

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

Parameters:
  • floats – 要转换的数值列

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

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

Returns:

新字符串列,浮点数作为字符串

std::unique_ptr<column> is_float(strings_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())#

返回一个布尔列,用于标识所有字符都可以有效转换为浮点数的字符串。

如果相应的字符串元素在 [-+0-9eE.] 中至少有一个字符,则输出行条目将设置为 true

Example:
s = ['123', '-456', '', 'A', '+7', '8.9' '3.7e+5']
b = s.is_float(s)
b is [true, true, false, false, true, true, true]

任何空行都会导致输出列中该行的条目为空。

Parameters:
  • input – 此操作的字符串实例

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

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

Returns:

每个字符串的布尔结果新列

std::unique_ptr<column> to_integers(strings_column_view const &input, data_type output_type, rmm::cuda_stream_view stream = cudf::get_default_stream(), rmm::device_async_resource_ref mr = cudf::get_current_device_resource_ref())#

返回一个新的整数数值列,从提供的字符串列中解析整数值。

任何空条目将导致输出列中的相应空条目。

仅识别字符[0-9]以及前缀‘-’和‘+’。当遇到任何其他字符时,解析将结束,并将当前数字转换为整数。

不会检查结果整数类型的溢出。每个字符串都使用 int64 类型进行转换,然后在存储到输出列之前将其转换为目标整数类型。如果结果整数类型太小而无法容纳该值,则存储的值将是未定义的。

Throws:

cudf::logic_error – 如果 output_type 不是整数类型。

Parameters:
  • input – 此操作的字符串实例

  • output_type – 返回的整数数值列的类型

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

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

Returns:

新列,包含从字符串转换而来的整数

std::unique_ptr<column> from_integers(column_view const &integers, rmm::cuda_stream_view stream = cudf::get_default_stream(), rmm::device_async_resource_ref mr = cudf::get_current_device_resource_ref())#

返回一个新的字符串列,将提供的列中的整数值转换为字符串。

任何空条目将导致输出列中的相应空条目。

对于每个整数,都会创建一个以10为基数的十进制字符串。负数将包含一个‘-’前缀。

Throws:

cudf::logic_error – 如果整数列不是整数类型。

Parameters:
  • integers – 要转换的数值列

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

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

Returns:

新字符串列,整数作为字符串

std::unique_ptr<column> is_integer(strings_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())#

返回一个布尔列,用于标识所有字符都可以转换为整数的字符串。

如果相应的字符串元素中的所有字符都在[-+0-9]范围内,则输出行条目将设置为true。可选的符号字符必须仅在第一个位置。请注意,不会检查整数值是否在其存储限制内。对于严格的整数类型检查,请使用另一个is_integer() API,它接受data_type参数。

Example:
s = ['123', '-456', '', 'A', '+7']
b = s.is_integer(s)
b is [true, true, false, false, true]

任何空行都会导致输出列中该行的条目为空。

Parameters:
  • input – 此操作的字符串实例

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

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

Returns:

每个字符串的布尔结果新列

std::unique_ptr<column> is_integer(strings_column_view const &input, data_type int_type, rmm::cuda_stream_view stream = cudf::get_default_stream(), rmm::device_async_resource_ref mr = cudf::get_current_device_resource_ref())#

返回一个布尔列,用于标识所有字符都可以转换为整数的字符串。

如果相应的字符串元素中的所有字符都在 [-+0-9] 范围内,则输出行条目将设置为 true。可选的符号字符必须仅出现在第一个位置。此外,整数部分必须适合底层存储类型的大小限制,该限制由 int_type 参数提供。

Example:
s = ['123456', '-456', '', 'A', '+7']

output1 = s.is_integer(s, data_type{type_id::INT32})
output1 is [true, true, false, false, true]

output2 = s.is_integer(s, data_type{type_id::INT8})
output2 is [false, false, false, false, true]

任何空行都会导致输出列中该行的条目为空。

Parameters:
  • input – 此操作的字符串实例

  • int_type – 用于检查下溢和溢出的整数类型

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

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

Returns:

每个字符串的布尔结果新列

std::unique_ptr<column> hex_to_integers(strings_column_view const &input, data_type output_type, rmm::cuda_stream_view stream = cudf::get_default_stream(), rmm::device_async_resource_ref mr = cudf::get_current_device_resource_ref())#

返回一个新的整数数值列,从提供的字符串列中解析十六进制值。

任何空条目将导致输出列中的相应空条目。

仅识别字符[0-9]和[A-F]。当遇到任何其他字符时,该字符串的解析结束。不对整数的符号进行解释。

不会检查结果整数类型的溢出。每个字符串都使用 int64 类型进行转换,然后在存储到输出列之前将其转换为目标整数类型。如果结果整数类型太小而无法容纳该值,则存储的值将是未定义的。

Throws:

cudf::logic_error – 如果 output_type 不是整数类型。

Parameters:
  • input – 此操作的字符串实例

  • output_type – 返回的整数数值列的类型

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

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

Returns:

新列,包含从字符串转换而来的整数

std::unique_ptr<column> is_hex(strings_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())#

返回一个布尔列,用于标识所有字符都可以从十六进制转换为整数的字符串。

如果相应的字符串元素在[0-9A-Za-z]中至少有一个字符,则输出行条目将设置为true。此外,字符串可能以'0x'开头。

Example:
s = ['123', '-456', '', 'AGE', '+17EA', '0x9EF' '123ABC']
b = is_hex(s)
b is [true, false, false, false, false, true, true]

任何空行都会导致输出列中该行的条目为空。

Parameters:
  • input – 此操作的字符串实例

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

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

Returns:

每个字符串的布尔结果新列

std::unique_ptr<column> integers_to_hex(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())#

返回一个新的字符串列,将整数列转换为十六进制字符。

任何空条目将导致输出列中的相应空条目。

输出字符集为‘0’-‘9’和‘A’-‘F’。输出字符串的宽度将是2的倍数,取决于整数类型的大小。如果第一个非零输出字节小于0x10,则在其前面添加一个前导零。

Example:
input = [1234, -1, 0, 27, 342718233] // int32 type input column
s = integers_to_hex(input)
s is [ '04D2', 'FFFFFFFF', '00', '1B', '146D7719']

上面的例子展示了一个INT32类型的列,其中每个整数占4个字节。前导零被抑制,除非填充一个完整的字节,如1234 -> ‘04D2而不是000004D24D2`。

Throws:

cudf::logic_error – 如果输入列不是整数类型。

Parameters:
  • input – 要转换为十六进制的整数列

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

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

Returns:

带有十六进制字符的新字符串列

std::unique_ptr<column> ipv4_to_integers(strings_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())#

将IPv4地址转换为整数。

IPv4格式是3个点之间的1-3个字符数字[0-9](例如123.45.67.890)。每个部分的值可以在[0-255]之间。

四组数字被转换为整数,并放置在结果整数中的8位字段内。

i0.i1.i2.i3 -> (i0 << 24) | (i1 << 16) | (i2 << 8) | (i3)

不检查格式。如果字符串不是IPv4格式,生成的整数是未定义的。

任何空条目将导致输出列中的相应空条目。

Parameters:
  • input – 此操作的字符串实例

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

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

Returns:

从字符串转换的新UINT32列

std::unique_ptr<column> integers_to_ipv4(column_view const &integers, rmm::cuda_stream_view stream = cudf::get_default_stream(), rmm::device_async_resource_ref mr = cudf::get_current_device_resource_ref())#

将整数转换为字符串形式的IPv4地址。

IPv4格式是3个点之间的1-3个字符数字[0-9](例如123.45.67.890)。每个部分的值可以在[0-255]之间。

每个输入的整数被分解为四个整数,通过将输入分成8位部分。这些子整数随后被转换为[0-9]字符,并放置在‘.’字符之间。

任何空条目将导致输出列中的相应空条目。

Throws:

cudf::logic_error – 如果输入列不是UINT32类型。

Parameters:
  • integers – 要转换的整数(UINT32)列

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

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

Returns:

新字符串列

std::unique_ptr<column> is_ipv4(strings_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())#

返回一个布尔列,用于标识所有字符都可以从IPv4格式转换为整数的字符串。

如果相应的字符串元素具有以下格式 xxx.xxx.xxx.xxx,其中 xxx 是0-255之间的整数,则输出行条目将设置为 true

Example:
s = ['123.255.0.7', '127.0.0.1', '', '1.2.34' '123.456.789.10']
b = s.is_ipv4(s)
b is [true, true, false, false, true]

任何空行都会导致输出列中该行的条目为空。

Parameters:
  • input – 此操作的字符串实例

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

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

Returns:

每个字符串的布尔结果新列

std::unique_ptr<column> format_list_column(lists_column_view const &input, string_scalar const &na_rep = string_scalar(""), strings_column_view const &separators = strings_column_view(column_view{data_type{type_id::STRING}, 0, nullptr, nullptr, 0}), rmm::cuda_stream_view stream = cudf::get_default_stream(), rmm::device_async_resource_ref mr = cudf::get_current_device_resource_ref())#

将字符串列表列转换为格式化的字符串列。

separators 列应包含以下顺序的3个字符串元素:

  • 元素分隔符(默认为逗号 ,

  • 左侧包围符号(默认为 [

  • 右侧封闭符号(默认为 ]

l1 = { [[a,b,c], [d,e]], [[f,g], [h]] }
s1 = format_list_column(l1)
s1 is now ["[[a,b,c],[d,e]]", "[[f,g],[h]]"]

l2 = { [[a,b,c], [d,e]], [NULL], [[f,g], NULL, [h]] }
s2 = format_list_column(l1, '-', [':', '{', '}'])
s2 is now ["{{a:b:c}:{d:e}}", "{-}", "{{f:g}:-:{h}}"]
Throws:

cudf::logic_error – 如果输入列不是带有STRING子类型的LIST类型。

Parameters:
  • input – 要格式化的列列表

  • na_rep – 用于替换空元素的字符串

  • separators – 用于包围列表组件和分隔元素的字符串

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

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

Returns:

新字符串列

std::unique_ptr<column> url_encode(strings_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())#

使用URL编码对每个字符串进行编码。

将大多数非ASCII字符和控制字符转换为以‘’为前缀的UTF-8十六进制代码点。例如,空格字符必须转换为字符‘%20’,其中‘20’表示UTF-8中空格的十六进制值。同样,多字节字符被转换为多个十六进制字符。例如,é字符被转换为字符‘C3A9’,其中‘C3A9’是该字符的UTF-8字节0xC3A9。

任何空条目将导致输出列中的相应空条目。

Parameters:
  • input – 此操作的字符串实例

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

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

Returns:

新字符串列

std::unique_ptr<column> url_decode(strings_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())#

使用URL编码解码每个字符串。

将所有以‘%’开头的字符序列转换为字符代码点,将接下来的2个字符解释为十六进制值以创建代码点。例如,序列‘%20’被转换为字节(0x20),这是一个空格字符。另一个例子将‘C3A9’转换为2个连续的字节(分别为0xc3和0xa9),这是é字符。总的来说,每当在字符串中遇到‘%’(单个百分号)字符时,3个字符被转换为一个字符字节。

任何空条目将导致输出列中的相应空条目。

Parameters:
  • input – 此操作的字符串实例

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

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

Returns:

新字符串列