pandas.Series.str.extract #
- 系列.str。extract ( pat , flags = 0 , Expand = True ) [来源] #
将正则表达式pat中的捕获组提取为 DataFrame 中的列。
对于系列中的每个主题字符串,从正则表达式pat的第一个匹配中提取组。
- 参数:
- 帕特斯特
带有捕获组的正则表达式模式。
- flags int,默认0(无标志)
模块中的标志
re
,例如re.IGNORECASE
,修改大小写、空格等的正则表达式匹配。有关更多详细信息,请参阅re
。- 展开布尔值,默认 True
如果为 True,则返回每个捕获组包含一列的 DataFrame。如果为 False,则如果有一个捕获组,则返回系列/索引;如果有多个捕获组,则返回 DataFrame。
- 返回:
- 数据框或系列或索引
一个 DataFrame,每个主题字符串一行,每组一列。正则表达式 pat 中的任何捕获组名称都将用作列名称;否则将使用捕获组编号。每个结果列的 dtype 始终是对象,即使未找到匹配项也是如此。如果
expand=False
和 pat 只有一个捕获组,则返回一个系列(如果主题是一个系列)或索引(如果主题是一个索引)。
也可以看看
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,具有一组的模式将返回一个系列。
>>> s.str.extract(r'[ab](\d)', expand=False) 0 1 1 2 2 NaN dtype: object