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
,则将模式视为字面字符串。如果
None
且 pat 长度为 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 参数,rsplit 和 split 的输出是相同的。
>>> s.str.rsplit() 0 [this, is, a, regular, sentence] 1 [https://docs.python.org/3/tutorial/index.html] 2 NaN dtype: object
n 参数可以用来限制在分隔符上的分割次数。split 和 rsplit 的输出是不同的。
>>> 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