dask.dataframe.Series.str.split

dask.dataframe.Series.str.split

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

根据给定的分隔符/定界符拆分字符串。

此文档字符串是从 pandas.core.strings.accessor.StringMethods.split 复制的。

Dask 版本可能存在一些不一致性。

已知的不一致性:

expand=True 在未知 n 的情况下将引发 NotImplementedError

已知的不一致性:使用未知的 n 时,expand=True 将引发 NotImplementedError

从指定的分隔符字符串开始,将 Series/Index 中的字符串分割。

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

用于分割的字符串或正则表达式。如果未指定,则按空白字符分割。

nint, 默认 -1 (全部)

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

展开bool, 默认 False

将分割的字符串扩展为单独的列。

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

  • 如果 False,返回 Series/Index,包含字符串列表。

正则表达式bool, 默认 None (Dask 不支持)

确定传入的模式是否为正则表达式:

  • 如果 True,则假设传入的模式是正则表达式。

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

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

  • 如果 None 并且 pat 的长度不是 1,则将 pat 视为正则表达式。

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

1.4.0 新版功能.

返回
Series、Index、DataFrame 或 MultiIndex

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

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

参见

Series.str.split

根据给定的分隔符/定界符拆分字符串。

Series.str.rsplit

从右边开始,根据给定的分隔符/定界符分割字符串。

Series.str.join

使用传递的分隔符连接作为 Series/Index 元素的列表。

str.split

split 的标准库版本。

str.rsplit

rsplit 的标准库版本。

注释

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

  • 如果找到的分裂数 > n, 只进行前 n 次分裂

  • 如果找到的分裂数 <= n,则进行所有分裂

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

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

在使用 pat 作为编译后的正则表达式时,使用 regex =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

对于稍微复杂一些的使用场景,比如将HTML文档名称与URL分开,可以使用参数设置的组合。

>>> 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``(默认值)时,给定的 `pat` 只有在 ``len(pat) != 1 时才会被编译为正则表达式。

>>> 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=True 时,pat 被解释为正则表达式

>>> 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=False 时,pat 被解释为字符串本身

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