字符串转换#

group Converting

函数

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 列。

任何空值条目将在输出列中产生相应的空值条目。

参数:
  • input – 用于此操作的 Strings 实例

  • true_string – 预期为 true 的字符串。不匹配的字符串为 false

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

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

返回:

从字符串转换而成的新 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())#

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

任何空值条目将在输出列中产生相应的空值条目。

抛出异常:

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

参数:
  • booleans – 要转换的布尔列

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

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

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

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

返回:

新的字符串列

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”

说明符

描述

%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 值优先。

抛出异常:

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

参数:
  • input – 用于此操作的 Strings 实例

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

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

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

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

返回:

新的日期时间列

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”

说明符

描述

%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 行表示相应的输入字符串可以使用给定格式正确解析。

参数:
  • input – 用于此操作的 Strings 实例

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

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

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

返回:

新的 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”

说明符

描述

%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

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

%a

来自 names 参数的星期缩写

%A

来自 names 参数的星期几

%b

来自 names 参数的月份名称缩写

%B

来自 names 参数的月份名称

更多描述可在以下链接找到:https://cppreference.cn/w/cpp/chrono/system_clock/formatter

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

任何空输入条目将在输出列中产生相应的空条目。

输入列的时间单位不影响由“%f”说明符写入的位数。对于毫秒使用3位数字,对于微秒使用6位数字,对于纳秒使用9位数字。如果精度高于单位,则在亚秒值的右侧填充零。如果精度低于单位,亚秒值可能会被截断。

如果在格式中包含“%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) 库中的 nl_langinfo 函数或 Python locale 库来检索特定语言环境的这些格式名称。

以下代码是使用 C++ std 函数从语言环境检索这些字符串的示例

#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
}
抛出异常:
参数:
  • timestamps – 要转换的时间戳值

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

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

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

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

返回:

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

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 参数指定。

抛出异常:

cudf::logic_error – 如果 duration_type 不是 duration 类型。

参数:
  • input – 用于此操作的 Strings 实例

  • duration_type – 用于创建输出列的 duration 类型

  • format – 指定字符串中 duration 格式的字符串

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

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

返回:

新的 duration 列

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”

不检查无效格式或无效 duration 值。格式化尽可能遵循 std::formatter<std::chrono::duration> 的规范。

任何空输入条目将在输出列中产生相应的空条目。

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

抛出异常:

cudf::logic_error – 如果 durations 列参数不是 duration 类型。

参数:
  • durations – 要转换的 duration 值

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

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

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

返回:

带有格式化 duration 的新字符串列

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],其中 sign 可以不存在,或者为 -+。小数点 [.] 可能存在或不存在,并且 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 中的 scale 用于设置整数部分。

抛出异常:

cudf::logic_error – 如果 output_type 不是定点十进制类型。

参数:
  • input – 用于此操作的 Strings 实例

  • output_type – 要返回的定点列类型,包括 scale 值

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

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

返回:

新的 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的十进制字符串。负数在输出字符串中包含一个 '-' 前缀。列的 scale 值用于放置小数点。负的 scale 值可能会在小数点后添加填充零。

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']
抛出异常:

cudf::logic_error – 如果 input 列不是定点十进制类型。

参数:
  • input – 要转换的定点列

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

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

返回:

新的字符串列

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

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

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

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]

任何空值条目在输出列中产生相应的空值条目。

抛出异常:

cudf::logic_error – 如果 decimal_type 不是定点十进制类型。

参数:
  • input – 用于此操作的 Strings 实例

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

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

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

返回:

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

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”)。

抛出异常:

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

参数:
  • strings – 用于此操作的 Strings 实例

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

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

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

返回:

从字符串转换而成的浮点数新列

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”)的字符串。

抛出异常:

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

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

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

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

返回:

带有浮点数作为字符串的新字符串列

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]

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

参数:
  • input – 用于此操作的 Strings 实例

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

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

返回:

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

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 类型进行转换,然后在存储到输出列之前强制转换为目标整数类型。如果结果整数类型太小而无法容纳该值,则存储的值将是未定义的。

抛出异常:

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

参数:
  • input – 用于此操作的 Strings 实例

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

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

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

返回:

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

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进制创建字符串。负数将包含 ‘-’ 前缀。

抛出异常:

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

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

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

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

返回:

以字符串形式表示整数的新字符串列

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。可选的符号字符只能出现在第一个位置。请注意,不检查整数值是否在其存储限制内。要进行严格的整数类型检查,请使用接受 data_type 参数的另一个 is_integer() API。

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

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

参数:
  • input – 用于此操作的 Strings 实例

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

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

返回:

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

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]

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

参数:
  • input – 用于此操作的 Strings 实例

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

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

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

返回:

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

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 类型进行转换,然后在存储到输出列之前强制转换为目标整数类型。如果结果整数类型太小而无法容纳该值,则存储的值将是未定义的。

抛出异常:

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

参数:
  • input – 用于此操作的 Strings 实例

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

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

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

返回:

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

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]

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

参数:
  • input – 用于此操作的 Strings 实例

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

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

返回:

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

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`。

抛出异常:

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

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

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

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

返回:

包含十六进制字符的新字符串列

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 格式是在三个点之间(例如 123.45.67.890)的 1-3 位数字 [0-9]。每个部分的取值范围为 [0-255]。

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

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

不对格式进行检查。如果字符串不是 IPv4 格式,则结果整数未定义。

任何空值条目将在输出列中产生相应的空值条目。

参数:
  • input – 用于此操作的 Strings 实例

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

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

返回:

从字符串转换而来的新 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 格式是在三个点之间(例如 123.45.67.890)的 1-3 位数字 [0-9]。每个部分的取值范围为 [0-255]。

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

任何空值条目将在输出列中产生相应的空值条目。

抛出异常:

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

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

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

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

返回:

新的字符串列

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.xxxxxx 是 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]

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

参数:
  • input – 用于此操作的 Strings 实例

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

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

返回:

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

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}}"]
抛出异常:

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

参数:
  • input – 要格式化的列表列

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

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

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

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

返回:

新的字符串列

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。

任何空值条目将在输出列中产生相应的空值条目。

参数:
  • input – 用于此操作的 Strings 实例

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

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

返回:

新的字符串列

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 编码对每个字符串进行解码。

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

任何空值条目将在输出列中产生相应的空值条目。

参数:
  • input – 用于此操作的 Strings 实例

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

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

返回:

新的字符串列