pandas.Series.str.split#
- Series.str.split(pat=None, *, n=-1, expand=False, regex=None)[源代码]#
围绕给定分隔符拆分字符串。
从开头按指定的定界符字符串分割 Series/Index 中的字符串。
- Parameters:
- patstr 或编译后的正则表达式,可选
用于分割的字符串或正则表达式。如果未指定,则按空格分割。
- nint,默认为 -1(全部)
限制输出中的拆分数。
None、0 和 -1 将被解释为返回所有拆分。- expandbool,默认 False
展开拆分的字符串到单独的列中。
如果为
True,则返回 DataFrame/MultiIndex,扩展维度。如果为
False,则返回 Series/Index,包含字符串列表。
- regex布尔值,默认为 None
确定传入的模式是正则表达式:
如果为
True,则假定传入的模式是正则表达式如果为
False,则将模式视为文字字符串。如果为
None且 pat 的长度为 1,则将 pat 视为文字字符串。如果为
None且 pat 的长度不为 1,则将 pat 视为正则表达式。如果 pat 是编译后的正则表达式,则不能设置为 False
在 1.4.0 版本加入.
- Returns:
- Series、Index、DataFrame 或 MultiIndex
除非 ``expand=True``(参见 Notes),否则类型与调用者匹配。
- Raises:
- ValueError
如果 regex 为 False 且 pat 是编译后的正则表达式
参见
Series.str.split围绕给定分隔符拆分字符串。
Series.str.rsplit从右侧围绕给定的分隔符/定界符拆分字符串。
Series.str.join使用分隔符连接 Series/Index 中作为元素的列表。
str.split用于拆分的标准库版本。
str.rsplit用于 rsplit 的标准库版本。
Notes
n 关键字的处理取决于找到的拆分数:
如果找到的拆分数 > n,则仅进行前 n 次拆分
如果找到的拆分数 <= n,则进行所有拆分
如果对于某个行找到的拆分数 < n,则在
expand=True的情况下追加 None 进行填充,直到达到 n
如果使用
expand=True,Series 和 Index 调用者分别返回 DataFrame 和 MultiIndex 对象。如果使用 regex =False 且 pat 是编译后的正则表达式,将引发错误。
Examples
>>> 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
对于稍微复杂一些的用例,例如从 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=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