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


Python pyspark Series.str.split用法及代码示例


本文简要介绍 pyspark.pandas.Series.str.split 的用法。

用法:

str.split(pat: Optional[str] = None, n: int = - 1, expand: bool = False) → Union[ps.Series, ps.DataFrame]

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

在指定的分隔符字符串处从头开始拆分系列中的字符串。相当于str.split()

参数

patstr,可选

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

nint,默认 -1(全部)

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

expand布尔值,默认为 False

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

  • 如果 Truen 必须是正整数,并返回 DataFrame 扩展维度。

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

返回

系列,DataFrame

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

注意

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

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

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

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

如果使用 expand=True ,系列调用者返回带有 n + 1 列的 DataFrame 对象。

注意

即使 n 比找到的拆分大得多,列数也不会像 pandas 那样缩小。

例子

>>> s = ps.Series(["this is a regular sentence",
...                "https://docs.python.org/3/tutorial/index.html",
...                np.nan])

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

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

如果没有 n 参数,则 rsplit 和 split 的输出是相同的。

>>> s.str.rsplit()
0                   [this, is, a, regular, sentence]
1    [https://docs.python.org/3/tutorial/index.html]
2                                               None
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                                               None
dtype: object
>>> s.str.rsplit(n=2)
0                     [this is a, regular, sentence]
1    [https://docs.python.org/3/tutorial/index.html]
2                                               None
dtype: object

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

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

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

>>> s.str.split(n=4, 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                                           None  None  None     None      None

对于稍微复杂的用例,例如从 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                                None        None

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

>>> s = ps.Series(["1+1=2"])
>>> s.str.split(r"\+|=", n=2, expand=True)
   0  1  2
0  1  1  2

相关用法


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