Series.str.
split
Split strings around given separator/delimiter.
Splits the string in the Series/Index from the beginning, at the specified delimiter string. Equivalent to str.split().
str.split()
String or regular expression to split on. If not specified, split on whitespace.
Limit number of splits in output. None, 0 and -1 will be interpreted as return all splits.
None
Expand the split strings into separate columns.
If True, return DataFrame/MultiIndex expanding dimensionality.
True
If False, return Series/Index, containing lists of strings.
False
Type matches caller unless expand=True (see Notes).
expand=True
See also
Series.str.split
Series.str.rsplit
Splits string around given separator/delimiter, starting from the right.
Series.str.join
Join lists contained as elements in the Series/Index with passed delimiter.
str.split
Standard library version for split.
str.rsplit
Standard library version for rsplit.
Notes
The handling of the n keyword depends on the number of found splits:
If found splits > n, make first n splits only
If found splits <= n, make all splits
If for a certain row the number of found splits < n, append None for padding up to n if expand=True
If using expand=True, Series and Index callers return DataFrame and MultiIndex objects, respectively.
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
In the default setting, the string is split by whitespace.
>>> s.str.split() 0 [this, is, a, regular, sentence] 1 [https://docs.python.org/3/tutorial/index.html] 2 NaN dtype: object
Without the n parameter, the outputs of rsplit and split are identical.
>>> s.str.rsplit() 0 [this, is, a, regular, sentence] 1 [https://docs.python.org/3/tutorial/index.html] 2 NaN dtype: object
The n parameter can be used to limit the number of splits on the delimiter. The outputs of split and rsplit are different.
>>> 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
The pat parameter can be used to split by other characters.
>>> s.str.split(pat="/") 0 [this is a regular sentence] 1 [https:, , docs.python.org, 3, tutorial, index... 2 NaN dtype: object
When using expand=True, the split elements will expand out into separate columns. If NaN is present, it is propagated throughout the columns during the split.
>>> 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
For slightly more complex use cases like splitting the html document name from a url, a combination of parameter settings can be used.
>>> 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
Remember to escape special characters when explicitly using regular expressions.
>>> s = pd.Series(["1+1=2"]) >>> s 0 1+1=2 dtype: object >>> s.str.split(r"\+|=", expand=True) 0 1 2 0 1 1 2