pandas.Series.str.split#
- Series.str.split(pat=None, n=- 1, expand=False, *, regex=None)[源代码]#
在给定的分隔符/分隔符周围拆分字符串。
在指定的分隔符字符串处,从开头拆分序列/索引中的字符串。
- 参数
- pat字符串或已编译的正则表达式,可选
要拆分的字符串或正则表达式。如果未指定,则使用空格拆分。
- n整型,默认为-1(全部)
限制输出中的拆分数量。
None
、0和-1将被解释为返回所有拆分。- expand布尔值,默认为False
将拆分的字符串展开为单独的列。
如果
True
,返回DataFrame/MultiIndex展开维度。如果
False
,返回系列/索引,包含字符串列表。
- regex布尔默认为无
确定传入的模式是否为正则表达式:
如果
True
假设传入的模式是正则表达式如果
False
将该模式视为文字字符串。如果
None
和 pat 长度为1,请客 pat 作为文字字符串。如果
None
和 pat 长度不是1,请处理 pat 作为正则表达式。在以下情况下不能设置为False pat 是已编译的正则表达式
1.4.0 新版功能.
- 退货
- 系列、索引、数据帧或多索引
类型匹配调用方,除非
expand=True
(请参阅注释)。
- 加薪
- ValueError
如果 regex 是假的,而且 pat 是已编译的正则表达式
参见
Series.str.split
在给定的分隔符/分隔符周围拆分字符串。
Series.str.rsplit
从右开始,围绕给定的分隔符/分隔符拆分字符串。
Series.str.join
使用传递的分隔符联接作为系列/索引中的元素包含的列表。
str.split
Split的标准库版本。
str.rsplit
Rplit的标准库版本。
注意事项
的处理方式 n 关键字取决于找到的拆分数量:
如果找到拆分> n ,先做出决定 n 仅拆分
如果找到拆分<= n ,进行所有拆分
如果对于某一行,找到的拆分数量< n ,追加 None 最高可填充到 n 如果
expand=True
如果使用
expand=True
、Series和Index调用方分别返回DataFrame和MultiIndex对象。使用 regex=False 使用一个 pat 因为编译后的正则表达式将引发错误。
示例
>>> 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
(默认)、给定的 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