将一列分成多个列表,并保留分隔符

时间:2019-01-04 20:01:33

标签: pandas list split

我有一个数据框,我需要在字符“ Y”上拆分一列并保留此分隔符。例如,

    import pandas as pd

    d1 = pd.DataFrame({'user': [1,2,3],'action': ['YNY','NN','NYYN']})

输出数据框应如下所示

    d2 = pd.DataFrame([{'action': 'Y, NY', 'user': 1},
           {'action': 'NN', 'user': 2},
          {'action': 'NY, Y, N', 'user': 3}])

    in[1]: d1
    out[1]: action  user
            YNY         1
            NN          2
            NYYN        3

    in[2]: d2
    out[2]:  action user
            Y,NY        1
            NN          2
            NY,Y, N     3

我尝试了一些问题,例如Python split() without removing the delimiterPython splitting on regex without removing delimiters。但是它们并不是我在这里要找的东西。

2 个答案:

答案 0 :(得分:1)

您需要的声音

d1.action.str.split('([^Y]*Y)').map(lambda x : [z for z in x  if z!= ''])
Out[234]: 
0       [Y, NY]
1          [NN]
2    [NY, Y, N]
Name: action, dtype: object

答案 1 :(得分:1)

使用-

d1['action'].str.split('Y').str.join('Y,').str.rstrip(',')

输出

0      Y,NY
1        NN
2    NY,Y,N