pandas.Series.str.extract#
- Series.str.extract(pat, flags=0, expand=True)[源代码]#
在正则表达式中提取捕获组 pat 作为DataFrame中的列。
对于系列中的每个主题字符串,从正则表达式的第一个匹配中提取组 pat 。
- 参数
- pat应力
具有捕获组的正则表达式模式。
- flagsInt,默认为0(无标志)
旗帜来自
re
模块,例如re.IGNORECASE
修改与大小写、空格等匹配的正则表达式。有关更多详细信息,请参见re
。- expand布尔值,默认为True
如果为True,则返回每个捕获组包含一列的DataFrame。如果为False,则如果有一个捕获组,则返回Series/Index;如果有多个捕获组,则返回DataFrame。
- 退货
- DataFrame、系列或索引
DataFrame,每个主题字符串占一行,每组占一列。正则表达式PAT中的任何捕获组名称都将用作列名;否则将使用捕获组编号。即使没有找到匹配项,每个结果列的数据类型也始终是Object。如果
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,则具有一个组的模式将返回Series。
>>> s.str.extract(r'[ab](\d)', expand=False) 0 1 1 2 2 NaN dtype: object