pandas.Series.str.extractall#
- Series.str.extractall(pat, flags=0)[源代码]#
在 DataFrame 中提取正则表达式 pat 中的捕获组作为列。
对于Series中的每个主题字符串,从正则表达式pat的所有匹配中提取组。当Series中的每个主题字符串恰好有一个匹配时,extractall(pat).xs(0, level=’match’) 与 extract(pat) 相同。
- 参数:
- patstr
带有捕获组的正则表达式模式。
- 标志int, 默认 0 (无标志)
一个
re
模块标志,例如re.IGNORECASE
。这些允许修改正则表达式匹配,例如大小写、空格等。多个标志可以用按位或运算符组合,例如re.IGNORECASE | re.MULTILINE
。
- 返回:
- DataFrame
一个
DataFrame
,每行代表一个匹配项,每列代表一个组。其行具有一个MultiIndex
,前几级来自主题Series
。最后一级名为 ‘match’ ,索引Series
中每个项目的匹配项。正则表达式 pat 中的任何捕获组名称将用作列名;否则将使用捕获组编号。
参见
提取
仅返回第一个匹配项(不是所有匹配项)。
示例
一个带有一个组的模式将返回一个带有一列的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