按字符串长度拆分系列

时间:2015-11-03 12:48:54

标签: python string pandas split

我有超过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)

2 个答案:

答案 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)]