Разделить на '||'в серии панд - PullRequest
0 голосов
/ 21 февраля 2019

Я пытаюсь разделить на ||

ser=pd.Series(['there a guy || I will have a bite || no can do','I can do || more'])
ser.str.split('||')

** Я должен получить вывод как [['Там парень "," Я буду кусать ","не могу сделать '], [' я могу сделать ',' больше ']] но я получаю это

0    [, t, h, e, r, e, s,  , a,  , g, u, y,  , |, |...
1    [, I,  , c, a, n,  , d, o,  , |, |,  , m, o, r...
dtype: object

Ответы [ 3 ]

0 голосов
/ 21 февраля 2019

Если вы хотите несколько столбцов:

>>> ser.str.split('\|\|',expand=True)
              0                     1           2
0  there a guy    I will have a bite    no can do
1     I can do                   more        None
>>> 
0 голосов
/ 21 февраля 2019

Чтобы избежать побега, я бы предложил вместо этого использовать классы персонажей:

ser.str.split(r'[|]{2}')

0    [there a guy ,  I will have a bite ,  no can do]
1                                  [I can do ,  more]
dtype: object

В качестве альтернативы, вам не нужно избегать себя, потому что re.escape может сделать это за вас.

import re
ser.str.split(re.escape('||'))

0    [there a guy ,  I will have a bite ,  no can do]
1                                  [I can do ,  more] 
0 голосов
/ 21 февраля 2019

Double || обрабатывается как регулярное выражение, поэтому нужно экранировать эти значения на \:

a = ser.str.split('\|\|')
print (a)
0    [there a guy ,  I will have a bite ,  no can do]
1                                  [I can do ,  more]
dtype: object
...