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