Pandas系列str拆分方法以负前瞻方式中断



我有一个Pandas系列,我想从中提取一些信息。该系列如下所示:

import pandas as pd
ex = {0: 'A_26_y',
1: 'A_25_x',
2: 'B_3_x',
3: 'A_17_y',
4: 'B_11_x',
5: 'A_19_y',
6: 'A_17_y',
7: 'A_18_x',
8: 'C_x',
9: 'B_12_y'}
ex = pd.Series(ex)
ex
0    A_26_y
1    A_25_x
2     B_3_x
3    A_17_y
4    B_11_x
5    A_19_y
6    A_17_y
7    A_18_x
8       C_x
9    B_12_y
dtype: object

我想在_符号第二次出现时打破这个系列。我试着使用下面的负前瞻:

ex.str.split(r"(_)(?!.*1)", expand=True)

然而,它会产生3列,而不是我所期望的2列,因为它还返回分隔符:

0   1   2
0   A_26    _   y
1   A_25    _   x
2   B_3     _   x
3   A_17    _   y
4   B_11    _   x
5   A_19    _   y
6   A_17    _   y
7   A_18    _   x
8   C       _   x
9   B_12    _   y

我该怎么解决这个问题?

您可以避免regex,并将Series.str.rsplitn=1:一起使用

In [533]: ex.str.rsplit('_', n=1, expand=True)
Out[533]: 
0  1
0  A_26  y
1  A_25  x
2   B_3  x
3  A_17  y
4  B_11  x
5  A_19  y
6  A_17  y
7  A_18  x
8     C  x
9  B_12  y

最新更新