pandas.Series.str.extractall #

系列.str。extractall ( pat , flags = 0 ) [来源] #

将正则表达式pat中的捕获组提取为 DataFrame 中的列。

对于系列中的每个主题字符串,从正则表达式 pat 的所有匹配中提取组。当系列中的每个主题字符串恰好有一个匹配项时,extractall(pat).xs(0, level='match') 与 extract(pat) 相同。

参数
帕特斯特

带有捕获组的正则表达式模式。

flags int,默认0(无标志)

模块re标志,例如re.IGNORECASE。这些允许修改正则表达式匹配的大小写、空格等。多个标志可以与按位 OR 运算符组合,例如。re.IGNORECASE | re.MULTILINE

返回
数据框

每场比赛占一行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<digit>\d)")
        digit
match
A 0         1
  1         2
B 0         1

具有两个组的模式将返回具有两列的 DataFrame。

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

不匹配的可选组在结果中为 NaN。

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