我有超过1M行,想要将123456789
(长度= 9)等一系列字符串拆分为3个系列(就像MS Excel可以做的那样):
c1 c2 c3
123 456 789
... ... ...
我看到.str.split
函数需要一些分隔符和.str.slice
,它一次只能提供一个系列。有没有。比这更好吗?
s21 = s11.str.slice(0,3)
s22 = s11.str.slice(3,6)
s23 = s11.str.slice(6,9)
答案 0 :(得分:2)
您可以使用str.extract
:
>>> df
s11
0 123456789
1 987654321
>>> df['s11'].str.extract('(.{3,3})' * 3)
0 1 2
0 123 456 789
1 987 654 321
但是,当像str.slice
之类的简单工作时,趋于比使用不必要的正则表达式更快,即使您需要手动调用它几次或使用for循环。< / p>
您可以在一个班轮中执行str.slice
,如下所示:
>>> df['a'], df['b'], df['c'] = map(df['s11'].str.slice, [0, 3, 6], [3, 6, 9])
>>> df
s11 a b c
0 123456789 123 456 789
1 987654321 987 654 321
答案 1 :(得分:1)
如果您需要做的就是将固定长度的字符串拆分成较小的,相等大小的固定长度字符串,您可以这样做:
s = "123456789"
x = [s[i:i+3] for i in range(0, 9, 3)]