Разные выходные данные для pd.str.extract () и re.search () - PullRequest
1 голос
/ 25 марта 2020

Как видно из моего предыдущего вопроса

Переименовать столбцы в регулярном выражении, оставьте имя, если не найдено совпадений

Почему вывод регулярного выражения отличается?

data = {'First_Column': [1,2,3], 'Second_Column': [1,2,3], 
        '\First\Mid\LAST.Ending': [1,2,3], 'First1\Mid1\LAST1.Ending': [1,2,3]}

df = pd.DataFrame(data)

     First_Column   Second_Column   \First\Mid\LAST.Ending  First1\Mid1\LAST1.Ending

pd.str.extract ()

df.columns.str.extract(r'([^\\]+)\.Ending')   

    0
0   NaN
1   NaN
2   LAST
3   LAST1

re.search ()

col = df.columns.tolist()
for i in col[2:]:
    print(re.search(r'([^\\]+)\.Ending', i).group())

LAST.Ending
LAST1.Ending

THX

1 Ответ

1 голос
/ 25 марта 2020

С pandas.Series.str.extract документы

Извлечение групп захвата в регулярном выражении в виде столбцов в DataFrame.

Возвращает группу захвата , Принимая во внимание, что re.search с group() или group(0) возвращает все совпадение, но если вы измените на group(1), он вернет захват group 1.

Это вернет полное совпадение:

 for i in col[2:]:
    print(re.search(r'([^\\]+)\.Ending', i).group())

LAST.Ending
LAST1.Ending

Это вернет только группу захвата:

 for i in col[2:]:
    print(re.search(r'([^\\]+)\.Ending', i).group(1))

LAST
LAST1

Далее читать Link

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...