pandas.Series.str.extract#
- Series.str.extract(pat, flags=0, expand=True)[源代码]#
在 DataFrame 中提取正则表达式 pat 中的捕获组作为列。
对于Series中的每个主题字符串,从正则表达式 pat 的第一个匹配项中提取组。
- 参数:
- patstr
带有捕获组的正则表达式模式。
- 标志int, 默认 0 (无标志)
来自
re
模块的标志,例如re.IGNORECASE
,它们修改正则表达式匹配,例如大小写、空格等。更多详情,请参见re
。- 展开bool, 默认为 True
如果为真,返回每个捕获组对应一列的DataFrame。如果为假,如果有一个捕获组则返回Series/Index,如果有多个捕获组则返回DataFrame。
- 返回:
- DataFrame 或 Series 或 Index
每个主题字符串一行,每个组一列的 DataFrame。正则表达式 pat 中的任何捕获组名称将用作列名;否则将使用捕获组编号。每个结果列的 dtype 始终为对象,即使找不到匹配项也是如此。如果
expand=False
且 pat 只有一个捕获组,则返回一个 Series(如果 subject 是 Series)或 Index(如果 subject 是 Index)。
参见
extractall
返回所有匹配项(不仅仅是第一个匹配项)。
例子
具有两个组的模式将返回一个包含两列的DataFrame。不匹配的将是NaN。
>>> s = pd.Series(["a1", "b2", "c3"]) >>> s.str.extract(r"([ab])(\d)") 0 1 0 a 1 1 b 2 2 NaN NaN
一个模式可能包含可选的组。
>>> s.str.extract(r"([ab])?(\d)") 0 1 0 a 1 1 b 2 2 NaN 3
命名组将成为结果中的列名。
>>> s.str.extract(r"(?P<letter>[ab])(?P<digit>\d)") letter digit 0 a 1 1 b 2 2 NaN NaN
如果 expand=True,带有一个组的模式将返回一个包含一列的 DataFrame。
>>> s.str.extract(r"[ab](\d)", expand=True) 0 0 1 1 2 2 NaN
如果 expand=False,带有单个组的模式将返回一个 Series。
>>> s.str.extract(r"[ab](\d)", expand=False) 0 1 1 2 2 NaN dtype: object