pandas.Series.str.extract#

Series.str.extract(pat, flags=0, expand=True)[源代码]#

将正则表达式 pat 中的捕获组提取为 DataFrame 中的列。

对于 Series 中的每个主题字符串,从正则表达式 pat 的第一个匹配项中提取组。

Parameters:
patstr

带捕获组的正则表达式模式。

flagsint,默认为 0(无标志)。

来自 re 模块的标志,例如 re.IGNORECASE,用于修改正则表达式匹配,例如大小写、空格等。有关更多详细信息,请参阅 re

expandbool, default True

如果为 True,则返回每个捕获组有一个列的 DataFrame。如果为 False,则在只有一个捕获组时返回 Series/Index,在有多个捕获组时返回 DataFrame。

Returns:
DataFrame 或 Series 或 Index

一个 DataFrame,其中每行对应一个主题字符串,每列对应一个组。正则表达式 pat 中的任何捕获组名称都将用作列名;否则将使用捕获组编号。每个结果列的 dtype 始终为 object,即使没有找到匹配项。如果 expand=False 且 pat 只有一个捕获组,则返回 Series(如果主题是 Series)或 Index(如果主题是 Index)。

参见

extractall

返回所有匹配项(而不仅仅是第一个匹配项)。

Examples

包含两个组的模式将返回一个包含两列的 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