字符串转换#
- 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 ×tamps, 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
函数或 Pythonlocale
库来检索特定语言环境的这些格式名称。以下代码是使用 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 }
- 抛出异常:
cudf::logic_error – 如果
timestamps
列参数不是时间戳类型。cudf::logic_error – 如果
format
字符串为空cudf::logic_error – 如果
names.size()
是无效大小。必须是 0 或 40 个字符串。
- 参数:
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 可以不存在,或者为-
或+
。小数点[.]
可能存在或不存在,并且integer
和fraction
由 [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而不是
000004D2或
4D2`。- 抛出异常:
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.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]
任何空行都会导致输出列中该行的条目为空。
- 参数:
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 – 用于分配返回列的设备内存的设备内存资源
- 返回:
新的字符串列
-
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())#