我有一个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.rsplit
与n=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