У меня есть серия Pandas, из которой я хочу извлечь некоторую информацию. Серия выглядит следующим образом:
import pandas as pd
ex = {0: 'A_26_y',
1: 'A_25_x',
2: 'Bex.str.split(r"(_)(?!.*\1)", expand=True)
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 Bex.str.split(r"(_)(?!.*\1)", expand=True)
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
Как я могу это исправить?
r"_(?!.*_)"
илиr"_(?=[^_]*$)"
. Не захватывайте_
. - person Wiktor Stribiżew   schedule 05.01.2021