pandas.Series.str.extractall#

Series.str.extractall(шаблон, флаги=0)[источник]#

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

Для каждой строки-субъекта в Series извлечь группы из всех совпадений регулярного выражения pat. Когда каждая строка-субъект в Series имеет ровно одно совпадение, extractall(pat).xs(0, level='match') эквивалентно extract(pat).

Параметры:
шаблонstr

Шаблон регулярного выражения с захватывающими группами.

флагиint, по умолчанию 0 (без флагов)

A re флаг модуля, например re.IGNORECASE. Они позволяют изменять сопоставление регулярных выражений для таких вещей, как регистр, пробелы, и т.д. Несколько флагов могут быть объединены с помощью побитового оператора ИЛИ, например re.IGNORECASE | re.MULTILINE.

Возвращает:
DataFrame

A DataFrame с одной строкой для каждого совпадения и одним столбцом для каждой группы. Его строки имеют MultiIndex с первыми уровнями, которые происходят от субъекта Series. Последний уровень называется 'match' и индексирует совпадения в каждом элементе Series. Любые имена групп захвата в регулярном выражении pat будут использоваться для имен столбцов; в противном случае будут использоваться номера групп захвата.

Смотрите также

extract

Возвращает только первое совпадение (не все совпадения).

Примеры

Шаблон с одной группой вернет DataFrame с одним столбцом. Индексы без совпадений не появятся в результате.

>>> s = pd.Series(["a1a2", "b1", "c1"], index=["A", "B", "C"])
>>> s.str.extractall(r"[ab](\d)")
        0
match
A 0      1
  1      2
B 0      1

Имена групп захвата используются для названий столбцов результата.

>>> s.str.extractall(r"[ab](?P\d)")
        digit
match
A 0         1
  1         2
B 0         1

Шаблон с двумя группами вернёт DataFrame с двумя столбцами.

>>> s.str.extractall(r"(?P[ab])(?P\d)")
        letter digit
match
A 0          a     1
  1          a     2
B 0          b     1

Необязательные группы, которые не совпадают, в результате отображаются как NaN.

>>> s.str.extractall(r"(?P[ab])?(?P\d)")
        letter digit
match
A 0          a     1
  1          a     2
B 0          b     1
C 0        NaN     1