mars.dataframe.Series.str.extract#

Series.str.extract(pat: 字符串, flags: 整型 = 0, expand: 布尔型 = True) FrameOrSeriesUnion | 索引#

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

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

Parameters
  • pat (str) – 带有捕获组的正则表达式模式。

  • flags (int, 默认为 0 (无标志)) – 来自 re 模块的标志,例如 re.IGNORECASE,用于修改正则表达式匹配,例如大小写、空格等。有关更多详细信息,请参见 re

  • expand (bool, default True) – 如果为 True,返回每个捕获组一个列的 DataFrame。 如果为 False,若只有一个捕获组则返回一个 Series/Index, 若有多个捕获组则返回一个 DataFrame。

Returns

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

Return type

DataFrameSeriesIndex

另请参阅

extractall

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

示例

一个具有两个组的模式将返回一个包含两列的DataFrame。非匹配项将显示为NaN。

>>> import mars.dataframe as md
>>> s = md.Series(['a1', 'b2', 'c3'])
>>> s.str.extract(r'([ab])(\d)').execute()
    0    1
0    a    1
1    b    2
2  NaN  NaN

一个模式可以包含可选组。

>>> s.str.extract(r'([ab])?(\d)').execute()
    0  1
0    a  1
1    b  2
2  NaN  3

命名组将成为结果中的列名。

>>> s.str.extract(r'(?P<letter>[ab])(?P<digit>\d)').execute()
letter digit
0      a     1
1      b     2
2    NaN   NaN

如果expand=True,包含一个组的模式将返回一个包含一列的DataFrame。

>>> s.str.extract(r'[ab](\d)', expand=True).execute()
    0
0    1
1    2
2  NaN

如果expand=False,包含一个组的模式将返回一个Series。

>>> s.str.extract(r'[ab](\d)', expand=False).execute()
0      1
1      2
2    NaN
dtype: object