当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Python pandas.Series.str.rsplit用法及代码示例


用法:

Series.str.rsplit(pat=None, n=- 1, expand=False)

围绕给定的分隔符/分隔符拆分字符串。

在指定的分隔符字符串处从末尾拆分系列/索引中的字符串。

参数

patstr 或编译的正则表达式,可选

要拆分的字符串或正则表达式。如果未指定,则在空格处拆分。

nint,默认 -1(全部)

限制输出中的拆分数量。 None , 0 和 -1 将被解释为返回所有拆分。

expand布尔值,默认为 False

将拆分的字符串展开为单独的列。

  • 如果 True ,返回 DataFrame/MultiIndex 扩展维度。

  • 如果 False ,则返回包含字符串列表的系列/索引。

regex布尔值,默认无

确定 passed-in 模式是否为正则表达式:

  • 如果 True ,假设 passed-in 模式是正则表达式

  • 如果 False ,则将模式视为文字字符串。

  • 如果 Nonepat 长度为 1,则将 pat 视为文字字符串。

  • 如果 Nonepat 长度不为 1,则将 pat 视为正则表达式。

  • 如果 pat 是已编译的正则表达式,则不能设置为 False

返回

Series、Index、DataFrame 或 MultiIndex

类型匹配调用者,除非expand=True(见注释)。

抛出

ValueError
  • 如果 regex 为 False 并且 pat 是已编译的正则表达式

注意

n 关键字的处理取决于找到的拆分数量:

  • 如果发现拆分 > n ,请先进行 n 拆分

  • 如果发现拆分 n ,则进行所有拆分

  • 如果对于某一行,找到的拆分数 n ,则追加 None 以填充到 n if expand=True

如果使用 expand=True ,Series 和 Index 调用者分别返回 DataFrame 和 MultiIndex 对象。

使用带有patregex=False 作为编译的正则表达式会引发错误。

例子

>>> s = pd.Series(
...     [
...         "this is a regular sentence",
...         "https://docs.python.org/3/tutorial/index.html",
...         np.nan
...     ]
... )
>>> s
0                       this is a regular sentence
1    https://docs.python.org/3/tutorial/index.html
2                                              NaN
dtype:object

在默认设置中,字符串由空格分隔。

>>> s.str.split()
0                   [this, is, a, regular, sentence]
1    [https://docs.python.org/3/tutorial/index.html]
2                                                NaN
dtype:object

如果没有n 参数,rsplitsplit 的输出是相同的。

>>> s.str.rsplit()
0                   [this, is, a, regular, sentence]
1    [https://docs.python.org/3/tutorial/index.html]
2                                                NaN
dtype:object

n 参数可用于限制分隔符上的拆分数量。 splitrsplit 的输出不同。

>>> s.str.split(n=2)
0                     [this, is, a regular sentence]
1    [https://docs.python.org/3/tutorial/index.html]
2                                                NaN
dtype:object
>>> s.str.rsplit(n=2)
0                     [this is a, regular, sentence]
1    [https://docs.python.org/3/tutorial/index.html]
2                                                NaN
dtype:object

pat 参数可用于按其他字符分割。

>>> s.str.split(pat="/")
0                         [this is a regular sentence]
1    [https:, , docs.python.org, 3, tutorial, index...
2                                                  NaN
dtype:object

使用 expand=True 时,拆分元素将扩展为单独的列。如果存在 NaN,它将在拆分期间传播到整个列。

>>> s.str.split(expand=True)
                                               0     1     2        3         4
0                                           this    is     a  regular  sentence
1  https://docs.python.org/3/tutorial/index.html  None  None     None      None
2                                            NaN   NaN   NaN      NaN       NaN

对于稍微复杂的用例,例如从 url 中拆分 html 文档名称,可以使用参数设置的组合。

>>> s.str.rsplit("/", n=1, expand=True)
                                    0           1
0          this is a regular sentence        None
1  https://docs.python.org/3/tutorial  index.html
2                                 NaN         NaN

请记住在显式使用正则表达式时转义特殊字符。

>>> s = pd.Series(["foo and bar plus baz"])
>>> s.str.split(r"and|plus", expand=True)
    0   1   2
0 foo bar baz

正则表达式可用于处理 url 或文件名。当 pat 是字符串且 regex=None (默认值)时,仅当 len(pat) != 1 时,给定的 pat 才会编译为正则表达式。

>>> s = pd.Series(['foojpgbar.jpg'])
>>> s.str.split(r".", expand=True)
           0    1
0  foojpgbar  jpg
>>> s.str.split(r"\.jpg", expand=True)
           0 1
0  foojpgbar

regex=Truepat 被解释为正则表达式

>>> s.str.split(r"\.jpg", regex=True, expand=True)
           0 1
0  foojpgbar

编译的正则表达式可以传递为pat

>>> import re
>>> s.str.split(re.compile(r"\.jpg"), expand=True)
           0 1
0  foojpgbar

regex=Falsepat 被解释为字符串本身

>>> s.str.split(r"\.jpg", regex=False, expand=True)
               0
0  foojpgbar.jpg

相关用法


注:本文由纯净天空筛选整理自pandas.pydata.org大神的英文原创作品 pandas.Series.str.rsplit。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。