Polars 将数字字符串转换为列表

问题描述 投票:0回答:1

所以我有一个极坐标列/系列,它是数字字符串。

s = pl.Series("a", ["111","123","101"])
s
shape: (3,)
Series: 'a' [str]
[
    "111"
    "123"
    "101"
]

我想将每个字符串转换为整数列表。 我找到了一个有效的解决方案,但我不确定它是否是最佳的。

s.str.split("").arr.shift(1).arr.slice(2).arr.eval(pl.element().str.parse_int(10))
shape: (3,)
Series: 'a' [list[i32]]
[
    [1, 1, 1]
    [1, 2, 3]
    [1, 0, 1]
]

我首先在每个点分割琴弦。对于第一行,这给了我

["","1","1","1",""]
。由此我想删除第一个和最后一个条目(空字符串)。由于我事先不知道条目的长度,并且切片不允许指定结束索引,因此我使用了 shift -> slice 版本,但我觉得必须有更好的方法。

最后是parse_int的应用。

这似乎有效,但我想知道是否有更好的方法或任何单独的步骤。

python python-polars
1个回答
5
投票

更新:

.str.split("")
不再在结果中插入前导/尾随空字符串。

所以你可以直接

.cast()
结果列表。

s.str.split("").cast(pl.List(pl.Int64))
shape: (3,)
Series: 'a' [list[i64]]
[
    [1, 1, 1]
    [1, 2, 3]
    [1, 0, 1]
]
© www.soinside.com 2019 - 2024. All rights reserved.