Метод extract
Метод extract аксессора str применяется к Series
и позволяет извлечь из каждой строки первую подстроку, совпадающую с регулярным выражением.
Результатом является DataFrame, где каждая группа захвата из регулярного выражения становится отдельным столбцом.
Параметр pat принимает строку с регулярным выражением или скомпилированный объект регулярного выражения.
С помощью параметра expand (по умолчанию True) можно управлять форматом вывода:
если True, возвращается DataFrame, если False и группа одна - возвращается Series или Index.
Если совпадений нет, в результате появляются пропуски NaN.
Синтаксис
Series.str.extract(pat, flags=0, expand=True)
Пример
Извлечём из строк коды товаров, состоящие из буквы и двух цифр:
import pandas as pd
ser = pd.Series(['A12', 'B45', 'C78', 'D90'])
res = ser.str.extract(r'([A-Z])(\d{2})')
print(res)
Результат выполнения кода:
0 1
0 A 12
1 B 45
2 C 78
3 D 90
Пример
Извлечём домен из адресов электронной почты с помощью одной группы захвата:
import pandas as pd
ser = pd.Series(['user@example.com', 'admin@site.org', 'test@domain.net'])
res = ser.str.extract(r'@(\w+\.\w+)')
print(res)
Результат выполнения кода:
0
0 example.com
1 site.org
2 domain.net
Пример
Если регулярное выражение содержит одну группу захвата и параметр expand установлен в False, возвращается Series:
import pandas as pd
ser = pd.Series(['file_001', 'file_002', 'file_003'])
res = ser.str.extract(r'(\d+)', expand=False)
print(res)
Результат выполнения кода:
0 001
1 002
2 003
dtype: object
Пример
Если подстрока не найдена, в результате будет NaN:
import pandas as pd
ser = pd.Series(['abc', '123', 'xyz'])
res = ser.str.extract(r'(\d+)')
print(res)
Результат выполнения кода:
0
0 NaN
1 123
2 NaN
Смотрите также
-
метод
extractall,
который извлекает все совпадения из каждой строки -
метод
findall,
который возвращает список всех найденных совпадений -
метод
match,
который проверяет, совпадает ли строка с регулярным выражением с начала -
метод
contains,
который проверяет наличие подстроки или совпадения с шаблоном